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

时间:2009-09-17 05:40:39

标签: c# .net vb.net

在我发布之前,我听说过我需要强力命名我的二进制文件。有什么想法吗?

5 个答案:

答案 0 :(得分:18)

Eric Lippert posted最近关于强大的签约集会:

  

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

答案 1 :(得分:2)

在了解强命名程序集时,我发现这个MSDN magazine article非常有用。

答案 2 :(得分:2)

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

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

通过这种方式,您可以限制在应用程序上下文中允许使用的第3方插件。

答案 3 :(得分:2)

回答问题的第二部分:How to: Sign an Assembly with a Strong Name

  

使用Visual Studio

创建具有强名称的程序集并对其签名      

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

     

选择签名标签。

     

选择签署程序集框。

     

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

答案 4 :(得分:1)

如果您正在谈论.NET程序集,请参阅the docs