【问题标题】:Why should I strong name assemblies, when I have to manually turn of the Bypass-Feature?当我必须手动关闭 Bypass-Feature 时,为什么要强命名程序集?
【发布时间】:2014-03-26 11:08:00
【问题描述】:

Microsoft 代码分析鼓励我为所有程序集命名。但根据微软I have to manually disable the "Bypass Feature" that they are checked

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

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

谢谢! 斯蒂芬

【问题讨论】:

    标签: .net strongname


    【解决方案1】:

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

    好吧,作为一个实际上并不真实的笼统陈述。部分正确,如果应用程序在完全信任下运行,则它们不再经过验证 程序集存储在受信任的位置。本地机器或 Intranet 区域。

    在构建时,您不知道程序集最终将存储在哪里。您可能有一个部署计划,但这样的计划往往会在方便或必要时被否决。这包括当您需要将程序集存储在 GAC 中时需要一个强名称。可能是 DLL Hell 问题的解决方法,这可能需要在 之后完成。

    由于您没有对程序集进行强命名,因此无法使用诸如此类的解决方案,这很不方便。到那时几乎总是为时已晚,因为它需要重建一切。强命名非常简单,几乎没有充分的理由跳过它。或者,如果您不同意该消息,则直接隐藏该消息,代码分析规则确实符合“您考虑过这个吗?”警告类别。对晦涩细节的温和提醒。

    【讨论】:

      【解决方案2】:

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

      此外,您提到的绕过功能是一种性能黑客,它利用假设来(希望总是安全地)跳过完整性检查(恶意或格式错误的代码检测)步骤。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-24
        • 2011-07-30
        • 1970-01-01
        • 1970-01-01
        • 2021-05-14
        • 2018-10-11
        • 1970-01-01
        相关资源
        最近更新 更多