对不起这个可怕的标题。
我有一个签名的程序集“Signed.dll”,它是另一个程序集的依赖项,比如 Executable.exe。
Signed.dll 引用一个 COM DLL 并公开公开此 COM DLL 的一种类型:“ComPublicT”。
Executable.exe 必须引用签名项目中自动生成的 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 的引用,一切都很好。
因为 Signed 已签名,所以来自 Signed 的公开公开的 Interop.COM.dll 类型不会被编译器视为与来自 Executable 的 Interop.COM.dll 的公开公开的类型相同
Executable必须手动引用Signed的Interop.COM.dll,感觉很脆弱。