Dot-Net

用強名稱簽署我的程序集會阻止它工作

  • September 25, 2010

我的一位同事在 VB.net 中創建了一個程序集,用於通過 COM 互操作與 JScript 一起使用。該程序集過去執行良好,但我們對其進行了簽名,現在它似乎只能在 Windows 7 機器上執行。我測試了 2 台 Windows 7 機器和 2 台 Windows Vista 機器。

當我們簽署程序集並嘗試在 JScript 中實例化 ActiveX 對象時,返回一個錯誤,沒有消息,只有一個數字:

錯誤:

錯誤號:-2146234304

在Google上搜尋錯誤號並沒有返回太多。

如果我們從程序集中刪除強名稱,它就可以正常工作。關於可能是什麼問題的任何想法?不確定它是否有所作為,但程序集正在編譯並使用 VS 2010 簽名。

您是否在程序集簽名後重新創建了 COM 互操作?你如何註冊新版本的程序集?您是否清除了 Internet Explorer 的記憶體?

一般來說,錯誤 -2146234304 (0x80131040) 的意思是FUSION_E_REF_DEF_MISMATCH:“定位程序集的清單定義與名稱

$$ yourAssembly $$與程序集引用不匹配”。因此,您必須更新使用已簽名程序集的程序集清單。在您的情況下,您應該找出它的確切含義。對程序集的引用也保存在Assembly值之下HKEY_CLASSES_ROOT\CLSID\{YOUR_GUID}\InprocServer32,而不僅僅是在真正的清單。 您可以嘗試調查有關Fuslogvw.exe(程序集綁定日誌查看器)(或http://msdn.microsoft.com/en-US/library/ms229864(v=VS.80).aspx)的問題。HKLM\Software\Microsoft\Fusion之前可能需要在系統資料庫中進行一些更改(如 EnableLog、LogFailures、

如果您不能以您可以發布可用於重現您的問題的項目的連結的方式解決問題。

引用自:https://stackoverflow.com/questions/3720725