簡體   English   中英

強名稱驗證失敗

[英]Strong Name Validation Failed

兩台機器。 .NET 3.5和VS 2008 VC ++ SP1可再發行組件都有

一個使用兩個簽名DLL的​​exe,一個在C ++ / CLI中,另一個在C#中

exe在一台機器上加載並運行良好。

另一方面,我在C ++可執行文件中得到“強名稱驗證失敗”(HRESULT 0x8013141A)

有任何想法嗎?

以管理員身份打開命令提示符並輸入以下命令:

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

以管理員身份打開命令提示符並輸入以下命令:

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

請注意該參數區分大小寫。 有更多詳細信息的來源: http//blogs.msdn.com/b/keithmg/archive/2012/03/20/strong-name-validation-failed-exception-from-hresult-0x8013141a.aspx

您必須在64位計算機上使用64位版本的sn.exe。 (C:\\ Program Files \\ Microsoft SDKs \\ Windows \\ v6.0A \\ Bin \\ x64 \\ sn.exe)

代碼是否在“開發”機器上運行,您可能在某個階段運行“sn.exe -Vr AssemblyName.dll”,這將允許您使用延遲簽名的程序集,就像它已完全簽名一樣。 將延遲簽名的程序集傳輸到另一台計算機並運行它時,它將無法通過強名稱驗證,因為它未完全簽名。

就我而言,我在Visual Studio 2015遇到了同樣的問題,我已經簽署了程序集。

我通過這種方式修復它: 右鍵單擊導致問題的項目 - >“屬性” - >“構建” - >更改“平台目標”字段的值。

我不得不將它從Any CPU更改為x86但我想在項目和失敗的庫的功能中,您應該將其值更改為x64

SN.EXE在較新版本的Visual Studio中缺失。 在Visual Studio 2012中,我們必須使用“Visual Studio 2012的開發人員命令提示符”。 然后運行命令“sn”。

語法:sn -Vr *,2d58152b8e842be2

其中“2d58152b8e842be2”是錯誤消息中顯示的公鑰標記。 不知怎的,這一點並沒有解決我的問題。

您可以通過進入項目設置 - >簽名 - >並取消選中“簽署程序集”來繞過開發。

我在調試實體框架的源代碼副本時遇到了這個問題。

我今天遇到了這個,偶然發現了http://timgeerts.blogspot.co.uk/2009/08/strong-name-validation-failed.html ,這似乎是解決方案。

選項1)關閉代碼覆蓋率(在VS 2010中,轉到“測試設置” - >“數據和診斷” - >取消“代碼覆蓋率”旁邊的“已啟用”框)。

選項2)將簽名密鑰文件添加到代碼覆蓋配置中(在VS 2010中,轉到測試設置 - >數據和診斷 - >選擇代碼覆蓋率並單擊頂部的“配置”。這對應於“keyFile”屬性對於.testsettings文件中的CodeCoverage標記。)

在VS 2012中,默認情況下啟用代碼覆蓋率。 可以通過適當排除的.runsettings文件禁用它。 有關更多信息和示例文件,請參見http://msdn.microsoft.com/en-us/library/jj159530.aspx 對於選項2,盡管.runsettings文件中似乎沒有明確的設置,但正確的事情似乎是在簽名(YMMV)方面自動發生的。 但是,如果您正在引用VS 2010 .testsettings文件,則需要進行上述編輯。

右鍵單擊項目→屬性→構建選項卡→平台目標→選擇“x64”

我正在使用VS.Net Ultimate 2012

這個解決方案幫助了我:

右鍵單擊Project-> properties-> Build Tab-> switch生成序列化程序集到off-> done

我通過轉到Build菜單(頂部窗格)並僅為該特定項目說“Rebuild xxxProject.plugin”來修復此問題,這與構建整個解決方案相反。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM