对于可怕的标题感到抱歉。引用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