使用"强名称"在.net

时间:2015-10-16 09:41:10

标签: c# .net .net-assembly strongname

在.net中,我们拥有强大的装配名称。这个的实际用途是什么?内部如何使用?如果可能请解释方案

1 个答案:

答案 0 :(得分:0)

避免强烈命名(如果可以的话)!强烈的命名是一个彻头彻尾的痛苦。

只要您强烈命名一个程序集,它引用的所有内容都必须是强名称。在简单的应用程序中,没什么大不了的。如果你必须处理COM互操作库等,其他项目等问题就会成为维护的噩梦。

This读得很好。

从链接:强命名程序集有许多优点:

  1. 信任。由于涉及公钥加密,大会的用户可以相信它来自签名者,例如Red Gate Software。
  2. 防止篡改。大会的用户可以相信,自签署人发布以来,没有人篡改过它。 .NET运行时不会加载其签名哈希与其当前哈希值不匹配的程序集。
  3. 与GAC的兼容性。全局应用程序缓存只接受强名称程序集。
  4. 它也有缺点:

    1. “常见问题”,或“一个命名政策来统治所有人”。强名称程序集不能使用强名称的程序集。像病毒一样,强大的命名必须在整个应用程序中传播或消亡。这导致与开源或其他未签名的第三方组件交互时遇到困难。
    2. 版本耦合。由于程序集的强名称包括其版本,因此.NET框架通常要求,如果程序集A使用程序集B,则必须在运行时提供与A链接的程序集B的确切版本。
    3. 与GAC的兼容性。全局应用程序缓存只接受强名称程序集。
    4. 过去我处理强名称程序集并没有太多乐趣,尤其是那些为共享应用程序公开接口的程序集。您最终必须围绕强名称程序集进行工程设计(例如,使用publisher policy