Microsoft Code Analysis鼓励我强烈命名所有程序集。但据微软I have to manually disable the "Bypass Feature" that they are checked称。
因此,自.NET Framework 3.5版Service Pack 1强名称未经过验证。
为什么我仍然要用强名称签署我的程序集?
谢谢! 斯蒂芬
答案 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.aspx和http://www.codeproject.com/Articles/8874/Strong-Names-Explained