【问题标题】:Should I strongly name all assemblies?我应该强烈命名所有程序集吗?
【发布时间】:2014-09-11 12:38:08
【问题描述】:

所以有很多关于强命名 .Net 程序集的好处的问题,比如这个Why use strong named assemblies?

好处听起来不错,那我为什么不给我做的每一个项目命名呢?

不强命名程序集有什么好处,在创建新项目时我应该默认做什么?

【问题讨论】:

    标签: c# .net strongname


    【解决方案1】:

    强烈命名程序集需要时间(有点),并且对于您不打算将其推向市场/开源的项目没有用处。如果您没有对程序集进行强命名,则会产生一些影响,例如您无法将其添加到 GAC。

    一个可能的好处是您可以在程序集中引用其他未签名的程序集,而在强命名程序集中您只能引用其他强命名程序集。

    【讨论】:

    • 我同意一切,除了这需要时间。我的意思是,确实如此。但是如果你通过 VS 来做,大约需要点击 4 次鼠标。
    • 同意 MasterMastic,用生成的 snk 文件签署程序集(无密码)花了我几秒钟的时间。但我不是要求这样做的好处,而不是这样做。在什么情况下我最好不要对程序集进行强命名,而强签名程序集不能提供什么?
    • 感谢您的编辑 CodingChief “一个可能的好处..”,最后这给了我一个真正的好处,我在其他地方没有找到答案。但是,如果所有程序集首先都被强烈命名,那么这将不是问题。还有其他人吗?
    【解决方案2】:

    强命名程序集在以下场景中很有用:

    1. 您希望您的程序集能够被强名称程序集引用,或者您希望朋友可以从其他强名称程序集访问您的程序集。

    2. 应用需要访问同一程序集的不同版本。这意味着您需要不同版本的程序集在同一个应用程序域中并排加载而不会发生冲突。例如,如果 API 的不同扩展存在于具有相同简单名称的程序集中,则强命名会为程序集的每个版本提供唯一标识。

    3. 您不想对使用程序集的应用程序的性能产生负面影响,因此您希望程序集是域中立的。这需要强命名,因为必须在全局程序集缓存中安装与域无关的程序集。

    4. 当您想通过应用发布者策略为您的应用集中服务时,这意味着程序集必须安装在全局程序集缓存中。

    Source

    【讨论】:

    • 强烈命名的一些重要原因,但我有充分的理由不强烈命名
    • 我不确定是否有充分的理由对程序集进行弱命名。老实说,以上4点总结了一切。如果您想要以上任何内容,请强烈签名,否则请保持不签名。 @user1722957
    • 好的,所以原始问题的答案是“是”?如果我养成了对所有项目都强烈命名的习惯,那不会有什么坏处吗?
    • 无论如何,您可以一直忍受强命名程序集的痛苦。我只会在发布过程中签名(它是我发布清单中的前三名之一)
    • 好的,那么下一个明显的问题(从简化的角度来看)——为什么我们有选择的余地?为什么项目默认没有强命名。一定有缺点吗? (也许我做错了,但我认为 VS 中的过程几乎没有痛苦!)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    相关资源
    最近更新 更多