2008-12-31 55 views
18

Hai máy. Cả hai với .NET 3.5 và VS 2008 VC++ redistributables SP1Xác thực tên mạnh Không thành công

Một exe duy nhất mà sử dụng hai DLL ký kết, một trong C++/CLI và một trong C#

Các tải exe và chạy tốt trên một máy.

Mặt khác, tôi nhận được "Tên Validation Mạnh Không" trên C++ thực thi (HRESULT 0x8013141A)

Bất kỳ ý tưởng?

+0

Là supportedRuntimeVersion thiết lập một cách chính xác trong phần cấu hình của .exe.config? –

+0

Cuối cùng, Liên kết này đã giúp tôi: http://www.jarredcapellman.com/2013/2/25/monotouch-inside-visual-studio-2012-mscorlib-strong-name-validation-failed – Fery

Trả lời

6

Là mã chạy trên máy "phát triển", nơi bạn có thể chạy "sn.exe -Vr AssemblyName.dll" ở một số giai đoạn mà sẽ cho phép bạn sử dụng cụm từ đã ký trễ như thể nó đã được ký đầy đủ . Khi bạn chuyển cụm trễ đã ký sang máy khác và chạy nó, nó sẽ không xác thực tên mạnh vì nó chưa được ký đầy đủ.

+1

Có cách giải quyết khác không chạy sn.exe trên mọi máy khác? – Kakira

13

Bạn phải sử dụng phiên bản 64-bit của sn.exe trên máy 64 bit. (C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Bin \ x64 \ sn.exe)

8

Mở command prompt as administrator và nhập lệnh sau:

"C : \ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Bin \ x64 \ sn.exe" -Vr <dllpath>

Chú ý rằng đối số trường hợp nhạy cảm. Nguồn có thêm chi tiết: http://blogs.msdn.com/b/keithmg/archive/2012/03/20/strong-name-validation-failed-exception-from-hresult-0x8013141a.aspx

+7

Cần lưu ý rằng điều này không thực sự "sửa chữa" bất cứ điều gì, nó chỉ vô hiệu hóa xác minh. –

3

Bạn có thể bỏ qua điều này khi phát triển bằng cách đi sâu vào cài đặt dự án -> Ký -> và bỏ chọn "Ký tên hội đồng".

Tôi đã thực hiện điều này ngay hôm nay trong khi gỡ lỗi chống lại bản sao mã nguồn của Khung thực thể.

2

Tôi đã gặp phải điều này hôm nay và tình cờ gặp http://timgeerts.blogspot.co.uk/2009/08/strong-name-validation-failed.html, điều này có vẻ là giải pháp.

Tùy chọn 1) Tắt phạm vi mã (trong VS 2010, đi tới Cài đặt thử nghiệm - ›Dữ liệu và chẩn đoán -› Bỏ chọn hộp "Đã bật" bên cạnh Phạm vi mã).

Tùy chọn 2) Thêm tệp khóa ký vào cấu hình phạm vi mã (trong VS 2010, đi tới Cài đặt kiểm tra - ›Dữ liệu và chẩn đoán -› chọn Phạm vi mã và nhấp vào "Định cấu hình" ở trên cùng. Thuộc tính "keyFile" cho thẻ CodeCoverage trong tệp .testsettings.)

Trong VS 2012, phạm vi mã được bật theo mặc định. Nó có thể được vô hiệu hóa thông qua một tập tin .runsettings với một loại trừ thích hợp. Xem http://msdn.microsoft.com/en-us/library/jj159530.aspx để biết thêm thông tin và tệp mẫu. Đối với tùy chọn 2, mặc dù dường như không có cài đặt rõ ràng có sẵn trong tệp .runsettings, điều đúng dường như xảy ra tự động liên quan đến việc ký (YMMV). Tuy nhiên, nếu bạn đang tham khảo một tập tin VS 2010 .testsettings thì nó sẽ cần chỉnh sửa như trên.

0

Tôi đang làm việc với VS.Net Cuối cùng 2012

và giải pháp này đã giúp tôi:

Nhấp chuột phải vào dự án-> Properties-> Xây dựng Tab-> chuyển Generate lắp ráp tuần tự để OFF-> làm

2

Các sn.exe được Missing in Các phiên bản mới hơn của Visual Studio. Trong Visual studio 2012, chúng tôi phải sử dụng "nhắc lệnh của nhà phát triển cho Visual studio 2012". Sau đó, chạy lệnh "sn".

Cú pháp: sn -Vr *, 2d58152b8e842be2

nơi "2d58152b8e842be2" là token khóa công khai thể hiện trong Thông báo lỗi. Bằng cách nào đó điều này một mình đã không giải quyết vấn đề của tôi.

10

Mở command prompt as administrator và nhập lệnh sau:

reg DELETE "HKLM\Software\Microsoft\StrongName\Verification" /f 
reg ADD "HKLM\Software\Microsoft\StrongName\Verification\*,*" /f 
reg DELETE "HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification" /f 
reg ADD "HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification\*,*" /f 
3

Trong trường hợp của tôi, tôi đã có cùng một vấn đề với Visual Studio 2015 và tôi đã đã ký assembly.

Tôi đã sửa lỗi theo cách này: Nhấp chuột phải vào dự án gây ra sự cố -> "Thuộc tính" -> "Xây dựng" -> Thay đổi giá trị của trường "Mục tiêu nền tảng".

tôi đã phải thay đổi nó từ Any CPU để x86 nhưng tôi đoán rằng trong chức năng của dự án và các thư viện được thất bại, bạn nên thay đổi giá trị của nó để x64.

0

Tôi đã khắc phục điều này bằng cách chuyển đến menu Xây dựng (ngăn trên cùng) và nói "Rebuild xxxProject.plugin" cho dự án cụ thể đó, trái với việc xây dựng toàn bộ giải pháp.

0

Nhấp chuột phải vào dự án → Thuộc tính → tab Build → Nền Đích → Chọn "x64"

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