7

我有一个产品,它有大约 10 多个组件。我们过去常常在没有强烈命名程序集的情况下发布它。但是在阅读了强命名之后,我认为强命名程序集是一个明智的想法。只是想知道强命名程序使用的所有程序集的最佳实践是什么?

有什么想法吗?

4

1 回答 1

9

是的,这是一个最佳实践,你真的应该这样做,特别是考虑到你正在向客户发送此代码的事实(我认为强命名在内部或基于 Web 的应用程序中不太重要)。

有关此原理的解释,请参阅 强命名程序集

强名称由程序集的标识(其简单的文本名称、版本号和文化信息(如果提供))以及公钥和数字签名组成。它是使用相应的私钥从程序集文件(包含程序集清单的文件,该文件又包含构成程序集的所有文件的名称和哈希)生成的。Microsoft® Visual Studio® .NE​​T 和 Windows 软件开发工具包 (SDK) 中提供的其他开发工具可以为程序集分配强名称。具有相同强名称的程序集应该是相同的。

您可以通过使用强名称对程序集进行签名来确保名称是全局唯一的。特别是,强名称满足以下要求:

  • 强名称通过依赖唯一的密钥对来保证名称的唯一性。没有人可以生成与您相​​同的程序集名称,因为使用一个私钥生成的程序集与使用另一个私钥生成的程序集具有不同的名称。

  • 强名称保护程序集的版本沿袭。一个强名称可以确保没有人可以生成您的程序集的后续版本。用户可以确定他们正在加载的程序集版本来自创建应用程序构建版本的同一发布者。

  • 强名称提供了强大的完整性检查。通过 .NET Framework 安全检查可确保程序集的内容自构建后未更改。但是请注意,强名称本身并不意味着像数字签名和支持证书所提供的那样的信任级别。

当您引用强名称程序集时,您期望获得某些好处,例如版本控制和命名保护。如果强名称程序集随后引用了一个没有这些好处的简单名称的程序集,则您将失去使用强名称程序集所获得的好处并恢复为 DLL 冲突。因此,强名称程序集只能引用其他强名称程序集。

于 2009-08-10T13:31:17.953 回答