当我必须手动关闭旁路功能时,为什么要使用强名称程序集?

时间:2014-03-26 11:08:01

标签: .net strongname

Microsoft Code Analysis鼓励我强烈命名所有程序集。但据微软I have to manually disable the "Bypass Feature" that they are checked称。

因此,自.NET Framework 3.5版Service Pack 1强名称未经过验证。

为什么我仍然要用强名称签署我的程序集?

谢谢!    斯蒂芬

2 个答案:

答案 0 :(得分:3)

  

因此,自.NET Framework 3.5版Service Pack 1强名称未经过验证

好吧,作为一个实际上并非如此的一揽子陈述。部分正确,如果应用程序在完全信任中运行并且组件存储在受信任位置,则不再验证它们。本地计算机或Intranet区域。

在构建时,您无法确定最终将要存储程序集的位置。您可能有部署计划,但只要方便或必要,这样的计划往往会被推翻。这包括在需要将程序集存储在GAC中时需要强名称。解决DLL Hell问题的方法,从现在开始可能需要

由于你没有强烈命名装配,所以解决方案不可用,这很不方便。到那时,几乎总是来不及做任何事情,因为它需要重建一切。强命名很简单,很少有理由跳过它。或者如果您不同意该消息,请禁用该消息,代码分析规则确实适合“你考虑过这个吗?”警告类别。温柔地提醒人们隐晦的细节。

答案 1 :(得分:0)

如果恶意更改(或以其他方式格式错误)可执行代码的可能性与您无关,那么使用强名称的另外两个原因是(1)版本控制(例如DLL地狱问题)和(2)命名保护(即不相关的代码,它的汇编名称与您的汇编名称相同)。

此外,您提到的旁路功能是一种性能攻击,它利用了一个假设,以便(希望始终安全地)跳过完整性检查(恶意或格式错误的代码检测)步骤。

值得一读:http://msdn.microsoft.com/en-us/magazine/cc163583.aspxhttp://www.codeproject.com/Articles/8874/Strong-Names-Explained