簡體   English   中英

C#匯編強名稱錯誤(盡管已簽名)

[英]C# Assembly Strong Name error although signed

嘗試使用某些引用時,運行C#應用程序時遇到問題,引發以下錯誤:

無法加載文件或程序集“ My3rdPartyAssembly,版本= 1.0.0.0,區域性=中性,公共密鑰令牌=空”或其依賴項之一。 需要一個全名程序集。 (來自HRESULT的異常:0x80131044)“

然后,我按照這個答案在有關程序集上簽名。

我也可以通過Visual Studio和Sn確認我的DLL現在已經明確簽名並具有強名稱。

但是我看到兩件事:

  1. 在我簽名的應用程序版本上,仍然出現與上面相同的錯誤,好像程序集沒有強名稱。
  2. 在我的未簽名版本上,該版本直到現在仍可以與未簽名DLL一起正常工作,現在它與DLL的已簽名版本會引發相同的錯誤。

我對可能的原因一無所知。

謝謝。

事實證明,我能夠解決它。 我正在更新第三方庫(我要簽名的程序集),以便它可以與我的.exe正常運行,但是它被替換為NuGet軟件包中的未簽名版本。

您必須在以下位置更新.dll: .dll位置

我將為名為WPFCustomMessageBox.dll的示例程序包提供說明。 按照ff。 更新程序包並將其反映在調試文件夾中的步驟:

  1. 在上面提供的路徑中打開cmd
  2. 輸入ff。 您應該在系統中組織路徑,因為您的文件夾結構和文件所在的位置可能與我的不同

一種。 這個從.dll中獲取必要的文件

"C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.6.1 Tools\\x64\\Ildasm.exe" /all /out=WPFCustomMessageBox.il WPFCustomMessageBox.dll

我不確定這是做什么的,但是它為下一個命令准備了文件。

"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\Ilasm.exe" "WPFCustomMessageBox.il" /dll /resource="WPFCustomMessageBox.res" /key="publickey.snk"

C。 這個創建簽名的.dll

"C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.6.1 Tools\\x64\\sn.exe" -R "WPFCustomMessageBox.dll" "pair.pfx"

  1. 鍵入您的.pfx文件的密碼,它應該是經過簽名的.dll。

我已經在向第三方程序集添加強名稱的幫助下測試了此方法。 下次編譯時,應該對以前未簽名的.dll(已編譯/復制到Debug文件夾)進行簽名。 希望這可以幫助 :)

暫無
暫無

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

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