對於可怕的標題感到抱歉。引用COM DLL的簽名程序集依賴項必須具有依賴項生成的interop程序集,引用爲
我有一個簽名的程序集'Signed.dll',它是另一個程序集的依賴項,比如Executable.exe。
Signed.dll引用一個COM DLL並公開地公開這個COM DLL的類型之一:'ComPublicT。'
Executable.exe必須從Signed項目引用自動生成的Interop.COM.dll,而不是添加對原始COM DLL的引用。
錯誤是來自兩個不同COM互操作程序集的兩個不同ComPublicT類型之間的類型不匹配。
這僅在Signed.dll簽名時才需要。
除了創建一個模仿ComPublicT的類型之外,我如何允許Executable引用COM DLL而不是Signed的COM互操作程序集呢?
爲什麼會發生這種情況?
編輯,這裏是一個略微不同的細分:
簽署的項目引用COM.dll,並公開曝光從COM.dll 類型添加自動創建在Visual Studio這基準Interop.COM.dll
可執行引用和取決於已簽名的項目 通常,您可以添加對COM.dll的引用,並且一切正常。
由於簽名被簽名,從簽名的公開暴露Interop.COM.dll類型不被編譯器視爲與從可執行的Interop.COM.dll
可執行的公開裸露型必須手動參考簽名的Interop.COM.dll,感覺很脆弱。
你如何生成Signed.dll使用的互操作?由於Signed.dll已被簽名,因此您必須手動完成此操作,以便您可以提供.snk密鑰文件。 – 2009-12-03 23:10:01
當您向Visual Studio中的項目添加COM引用時,將自動生成COM互操作程序集。 COM.dll生成Interop.COM。DLL並放置在obj和bin文件夾中。 – 2009-12-03 23:30:38
問題是生成的Interop程序集不會醫學簽名:( – NPehrsson 2010-12-27 12:51:25