我想强命名一个托管应用程序,它通过互操作引用许多托管程序集以及 ActiveX 和 COM 组件(用 C++ 编写)。而且因为强命名程序集不能引用弱命名程序集,您能否告诉我应该为哪些问题做好准备,您遇到了什么问题,尤其是在处理那些 ActiveX 和 COM 互操作时?
此应用程序的解决方案很大。它由 50 多个托管 C#、Vb.net、本机 C++ 和托管 C++/CLI 项目组成。因此,您提供的信息和真实生活故事越多,我就越能做好准备,让自己免于头痛。
谢谢。
我想强命名一个托管应用程序,它通过互操作引用许多托管程序集以及 ActiveX 和 COM 组件(用 C++ 编写)。而且因为强命名程序集不能引用弱命名程序集,您能否告诉我应该为哪些问题做好准备,您遇到了什么问题,尤其是在处理那些 ActiveX 和 COM 互操作时?
此应用程序的解决方案很大。它由 50 多个托管 C#、Vb.net、本机 C++ 和托管 C++/CLI 项目组成。因此,您提供的信息和真实生活故事越多,我就越能做好准备,让自己免于头痛。
谢谢。
到目前为止,我还没有遇到任何与强名称相关的问题(也使用 COM 互操作程序集)。如果您得到一个没有强名称的第 3 方程序集,您可以自己对其进行后签名,从而使所有程序集都具有强名称。
当然,使互操作程序集强命名不会保护要修改或替换的底层 COM DLL,因此强名称的“保护”并不会真正将自身扩展到 COM 组件,即使互操作程序集是强命名的。命名。
除了可靠地存储 .snk 文件之外,真的没有什么问题。
请记住,将使用您的程序集的每个第三方程序集都将具有依赖项中提到的程序集的密钥,并且每次加载程序集时,它都会检查加载的程序集是否仍使用该密钥进行签名。这样做是为了防止某些恶意代码将您的程序集放错位置。
这意味着除非您可靠地存储用于签署程序集的早期版本的 .snk 文件,否则您将无法在不强制用户重新添加引用的情况下发布新版本。因此,存储 .snk 文件并为任何给定程序集的每个版本使用相同的文件。无论您是为不同的程序集使用不同的 .snk 文件还是为所有程序集使用一个文件并不重要,因此每个公司一个 .snk 就足够了。