【问题标题】:c# - can you make a "weak" assembly reference to a strong named assemblyc# - 你可以对强命名程序集进行“弱”程序集引用吗
【发布时间】:2010-03-22 11:28:55
【问题描述】:

出于各种原因,我宁愿不在我的项目中使用强命名(签名)程序集。但是,其中一个项目被共享点 Web 部件引用,这意味着它必须被签名。

是否可以对这个程序集进行签名,但是当我从其他项目中引用它时,使用非强引用来这样做。这将为我的其余代码提供未签名程序集的优势,但仍允许它由 sharepoint 加载。

【问题讨论】:

    标签: c# assemblies assembly-signing signed-assembly


    【解决方案1】:

    执行此操作的最简单方法可能是使用两种不同的项目配置 - 一种构建强命名程序集,另一种不构建。显然,您需要小心构建和引用程序集的方式,但这与需求冲突的领域有关。

    【讨论】:

    • 如何在 Visual Studio 中设置“两个不同的项目配置”?
    • 在项目属性的签名选项卡上禁用配置下拉菜单:i.imgur.com/vwZKy.png
    • @PavelChuchuva:如果不知道更多关于你在做什么,很难说为什么它被禁用,恐怕 - 我没有 Visual Studio我来做实验。
    • 我认为不可能有两个项目配置,其中一个签署装配,一个不签署。
    【解决方案2】:

    只需继续构建您的项目,不要使用强名称。当您需要将其部署到 Sharepoint 时,请在构建后使用工具对其进行签名。这是一个可以做到这一点的工具:

    http://signer.codeplex.com/Wikipage

    您也可以手动操作,但它是 PITA:

    http://buffered.io/posts/net-fu-signing-an-unsigned-assembly-without-delay-signing/

    【讨论】:

      【解决方案3】:

      这是 OP,但我没有 OpenID 登录,所以我想我无法以自己的身份回复。

      感谢您的回复。我认为任何一个都可以,但情况变得更加复杂。我在这里记录了我的发现,以防其他人感兴趣。

      事实上,sharepoint 引用了程序集 A,而程序集 A 又引用了程序集 B。

      我可以毫无问题地构建程序集 A 和 B 都未签名,但是如果我想对 A 签名,我必须更改项目本身以引用程序集 B 的签名版本。

      尽管可能有一种方法可以做到这一点,但我们认为不值得为具有相同名称的不同 DLL 集可能的 DLL 冲突和配置控制问题而烦恼。

      因此,我们决定在所有构建中对这两个程序集进行签名,并在必要时将代码重构为不同的程序集,以确保只有最少量的代码包含在已签名的程序集中,这样它们就不太可能发生变化。

      提姆

      【讨论】:

        猜你喜欢
        • 2011-10-16
        • 2010-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-16
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多