2011-07-27 38 views
7

Tôi có một dự án WPF 4 để tương tác với các tài liệu từ được thực hiện trong VS2010 và một dự án User Control dạng win để lưu trữ ứng dụng từ vào đó. Và các dll khác. Tất cả các dlls com được giới thiệu vào ứng dụng wpf chính của tôi. Tôi muốn xuất bản dự án của mình để tôi có thể cài đặt nó trên một máy khác và thực hiện cập nhật tự động cho nó, tôi gặp lỗi: "Thế hệ hội tụ thất bại - Liên kết tham chiếu 'Interop.Office' không có tên mạnh." lỗi cho mỗi Dll COM. Một dll đề cập đến (Interop.word.dll, interop.office.dll, interop.VBIDE.dll) và tất cả các dll này cũng được tham chiếu và được sử dụng vào mã wpf của tôi.Lắp ráp tham chiếu không thành công - Liên kết tham chiếu 'Interop.Office' không có tên mạnh

Tôi thấy liên kết Strong Signed Assemblies có cùng một câu hỏi nhưng không giải quyết được sự cố.

+0

Chỉ cần xóa tham chiếu và thêm lại. –

Trả lời

17

Tôi đã dành một thời gian rà soát Internet cho điều này, tôi tin rằng câu trả lời bạn cần có thể ở đây, đối với hầu hết các bên thứ 3 của dll.

"Adding Strong Name to Interop DLL"

Bài báo mô tả ba cách để thêm một tên mạnh để một hội đồng của bên thứ ba. Các lệnh là:
1. Thêm một Strong Name qua Key Pair

> SN -k MyKeyPair.snk 
> ILDASM ASQLService.dll /out:ASQLService.il 
> ILASM ASQLService.il /dll /resource=ASQLService.res /key=MyKeyPair.snk 

2. Thêm một Strong Name qua một Giấy chứng nhận trong một cửa hàng Certificate

> ILDASM ASQLService.dll /out:ASQLService.il 
> MAKECERT -ss MyCertificateStore -sk MyKeyContainer 
> ILASM ASQLService.il /dll /resource=ASQLService.res /[email protected] 

3. Thêm một Strong Name qua một Giấy chứng nhận trong một trao đổi thông tin cá nhân (pfx) file

> MAKECERT -r -pe -sv MyCertificate.pvk MyCertificate.cer 
> PVK2PFX -pvk MyCertificate.pvk -pi qwerty -spc MyCertificate.cer -pfx MyCertificate.pfx 
> SN -p MyCertificate.pfx MyCertificate-publickey.snk 
> ILASM ASQLService.il /dll /resource=ASQLService.res /key=MyCertificate-publickey.snk 
> SN -R ASQLService.dll MyCertificate.pfx 

Hy vọng nó sẽ giúp

+0

Loại lộn xộn, nhưng nó hoạt động hoàn hảo. Cảm ơn. – Nyerguds

+0

Bài viết đó thật tuyệt vời. – Pluto

5

Bạn phải có một .snk

Nhấp chuột phải vào dự án của bạn -> Properties và đi trên tab Ký -> Kiểm tra Đăng lắp ráp -> chọn mới chính

Hy vọng nó giúp

+7

Thực ra, vấn đề "tên mạnh" chỉ là STARTS nếu bạn quyết định ký tên vào hội đồng của bạn, vì vậy nó sẽ yêu cầu tất cả các dll được tham chiếu phải được ký tên mạnh. – Nyerguds

+0

Chính xác, mã đã ký không thể gọi mã không được ký. / –

7

Nhận xét này nên là câu trả lời:

Actually, the "strong name" problem only STARTS if you decide to sign your assembly, since then it'll require all referenced dlls to be strong-name signed too

Nếu bạn không muốn ký tên và muốn khắc phục lỗi biên dịch này. Chọn NOT để ký tên hội đồng bạn đang cố gắng xây dựng. Sau đó tất cả các tài liệu tham khảo dự án sẽ không yêu cầu ký kết.

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