“强名称”的用法在.net

本文关键字:强名称 net 用法 | 更新日期: 2023-09-27 18:18:03

在。net中,我们有汇编的强名称。它的实际用途是什么?内部如何使用?如果可能的话,请解释一下这个场景

“强名称”的用法在.net

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

一旦你给一个程序集起了强名称,它引用的所有东西也必须是强名称。在一个简单的应用程序中,没什么大不了的。如果你必须处理COM互操作库等,其他项目等,这个问题就变成了维护的噩梦。

这是一本好书。

来自链接:强命名程序集有很多优点:

  1. 信任。由于涉及到公钥加密,程序集的用户可以相信它来自签名者,例如Red Gate Software。
  2. 夯预防。程序集的用户可以相信,自签名者发布程序集以来,没有人对它进行过篡改。. net运行时将不会加载与当前哈希值不匹配的程序集。
  3. 与GAC兼容。全局应用程序缓存只接受强命名程序集。

它也有缺点:

  1. "常量问题",或者"一个命名策略来统治所有的问题"。强命名程序集不能使用非强命名程序集。与病毒一样,强命名必须在整个应用程序中传播,否则就会消亡。这会导致与开源或其他未签名的第三方组件交互困难。
  2. 版本耦合。由于程序集的强名称包含它的版本,. net框架通常要求,如果程序集A正在使用程序集B,则在运行时必须提供与A相链接的程序集B的确切版本。
  3. 与GAC兼容。全局应用程序缓存只接受强命名程序集。

在过去,我处理强命名程序集没有太多乐趣,特别是那些为共享应用程序公开接口的程序集。你最终不得不绕过强命名程序集(例如使用发布者策略)