强命名程序集(Strong Name Assembly)是指 具有唯一标识的程序集,它通过公钥和数字签名来加强名称的唯一性。强命名程序集的概念是为了解决不同公司可能开发出具有相同名称的程序集,如果这些程序集都被复制到同一个目录下,最后一个安装的程序集将会代替前面的程序集,从而导致所谓的“DLL Hell”问题。
强命名程序集包含以下四个部分:
简单文本名称:
程序集的基本名称。
版本号:
程序集的版本信息,用于区分不同版本。
区域性信息 (可选):程序集支持的地区设置信息。
公钥和数字签名:
使用非对称算法(如RSA)生成的公钥和私钥对程序集进行签名,确保程序集来源的可靠性和唯一性。
在.NET框架中,强命名程序集是通过在编译项目时将指定的公钥/私钥写入程序集来实现的。这使得每个程序集都有一个唯一的“强名称”,即使在相同的目录下也不会发生冲突。强命名程序集的主要用途包括:
防止DLL被随意引用和覆盖。
控制程序集版本,确保在应用程序中使用的程序集是正确和一致的版本。
提供程序集来源的可靠性,通过数字签名确保程序集没有被篡改。
可以使用Visual Studio或命令行工具(如Sn.exe)为程序集生成强名称。强命名程序集是.NET应用程序部署和版本控制的关键组成部分,有助于维护应用程序的稳定性和安全性。