什么是强命名,我如何强名二进制?

在我发布之前,我听说过某些地方需要强烈命名我的二进制文件。 这是什么想法?

Eric Lippert最近发布了强有力的签约集会:

强名称的目的仅仅是为了确保在按名称加载程序集时,您正在加载您认为正在加载的程序集 。 你说“我想加载来自FooCorp的Frobber,第4版”。 强名称齿轮确保您实际上正确加载该DLL,而不是另一个来自Evil Enterprises博士的名为Frobber,版本4的程序集。 然后,您可以设置安全策略,其中说“如果我在我的机器上有来自FooCorp的程序集,则完全信任它”。 这些场景是强名称的唯一设计目的。

简而言之,强名称程序集与证书签名。 它们扮演CAS(代码访问安全性)的角色:程序集有权做或不做。

[编辑]正如你们中的一些人指出的那样:建议创建强大的程序集,因为如果你编写了一些插件机制,它们会更强大地抵御攻击,例如将外部恶意代码引入你的应用程序。

这样,您可以限制允许在应用程序上下文中执行的第3方插件。

回答问题的第二部分: 如何:使用强名称签署程序集

使用Visual Studio创建具有强名称的程序集并对其进行签名

解决方案资源管理器中 ,打开解决方案的快捷菜单,然后选择“ 属性”

选择“ 签名”选项卡。

选择“ 签署assembly”框。

在“ 选择强名称密钥文件”框中,选择 ,然后导航到密钥文件。 要创建新的密钥文件,请选择 并在“ 创建强名称密钥”对话框中输入其名称。

在了解强命名程序集时,我发现这篇MSDN杂志文章非常有用。

如果您正在谈论.NET程序集,请参阅以下文档 。