2009-11-03 33 views
10

Việc nâng cấp gần đây của NHibernate 2.1 đã mang lại một tình huống đau đầu lớn lên bề mặt.Ký hợp đồng chưa được ký

Dường như hầu hết các dự án đều được xây dựng theo mặc định là các hội đồng đã ký. Đối với tham chiếu fluentnhibernate mẫu fluent.snk keyfile.

Nhibernate.search xây dựng unsigned từ những gì tôi có thể thu thập và sẽ không xây dựng ký đó là nếu bạn tham khảo một keyfile tạo ra, bạn nhận được lỗi:

lắp ráp Được tham chiếu 'Lucene.Net' không có một mạnh mẽ tên

Điều này có nghĩa các dự án như castle.activerecord có nhibernate.search như một sự phụ thuộc sẽ không xây dựng như bạn nhận được lỗi khủng khiếp tham chiếu lắp ráp nhibernate.search không có một tên mạnh:

Quit e một vài dự án sử dụng caslte.activerecord vì vậy nó là khá quan trọng là này xây dựng.

Có ai biết phải làm gì ở đây vì tôi hoàn toàn không có ý tưởng?

Đây là sự điên rồ hoàn toàn.

Trả lời

16
  1. Lấy MSIL cho lắp ráp cung cấp Từ một dấu nhắc lệnh VS.NET, nhập dữ liệu sau: c:> ildasm providedAssembly.dll /out:providedAssembly.il
  2. Rename/di chuyển lắp ráp ban đầu Tôi chỉ tack ".orig" vào tên tập tin.
  3. Tạo một hội đồng mới từ đầu ra MSIL và mã khóa lắp ráp của bạn Giả sử bạn đã có một tệp cặp khóa lắp ráp, hãy làm như sau từ dấu nhắc lệnh VS.NET: c:> ilasm providedAssembly.il/dll/key = keypair001.snk

Nguồn http://www.andrewconnell.com/blog/archive/2004/12/15/772.aspx

2

Vấn đề là, bạn không thể tham chiếu các hội đồng không có tên mạnh từ các hội đồng có tên mạnh, nhưng bạn có thể làm ngược lại. Đó là lý do tại sao tất cả các dự án phong nha ra có nên được ký kết.

Khi tôi gặp phải vấn đề đó, tôi bỏ một dòng tại tác giả dự án (hoặc đăng ký một vấn đề) với lời giải thích trong bình luận của tôi ở trên, và trong khi chờ đợi, tôi biên dịch và ký tên.

+0

+1. Vâng, các tùy chọn hoặc là kiểm soát bản thân và ký, hoặc làm cho tất cả các công cụ của bạn unsigned (thường không phải là một lựa chọn tốt). – RichardOD

1

Tất cả các câu trả lời cho có một lỗ hổng nghiêm trọng trong chúng - chúng không hoạt động nếu có nhiều hơn một cụm không dấu phụ thuộc lẫn nhau. Bạn sẽ phải chỉnh sửa các tệp IL theo cách thủ công để thay đổi các tham chiếu chưa ký cho các tài liệu đã ký. Đó là chắc chắn có thể, nhưng dễ bị lỗi.

Có một cách tốt hơn nhiều. Thứ nhất, đây là nguồn cung cấp của tôi:

  1. https://www.nuget.org/packages/Nivot.StrongNaming/1.0.4.2
  2. How to download a Nuget package without nuget.exe or Visual Studio extension?

Người đầu tiên là một liên kết đến một gói NuGet gọi StrongNaming cho phép đặt tên mạnh hội và nó cũng quan tâm tới những unsigned cho bạn! Phần thứ hai mô tả cách tải xuống gói NuGet mà không cần Visual Studio, nếu cần.

I, cá nhân, sử dụng Visual Studio để tải nó bằng cách sử dụng quản lý gói NuGet chính nó, tuy nhiên, bạn luôn có thể duyệt trực tiếp đến https://www.nuget.org/api/v2/package/Nivot.StrongNaming/1.0.4.2 và tải về nivot.strongnaming.1.0.4.2.zip

Có một thư mục tools trong zip đã tải xuống (hoặc gói nếu NuGet được sử dụng). Một khi bạn đã đặt nó, bạn có thể dễ dàng cài đặt nó như là một mô-đun PowerShell.

Các vấn đề liên quan