c# - 你可以对强名称程序集进行“弱”程序集引用

时间:2010-03-22 11:28:56

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

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

是否可以对此程序集进行签名,但是当我从其他项目引用它时,使用非强引用来执行此操作。这将为我提供其他代码的非签名程序集的优点,但仍然允许它由sharepoint加载。

3 个答案:

答案 0 :(得分:3)

最简单的方法可能是拥有两个不同的项目配置 - 其中一个构建一个强命名的程序集,而其中一个不构建。显然,你需要小心如何构建和引用程序集,但这与需求冲突的领域有关。

答案 1 :(得分:1)

只需继续构建没有强名称的项目。当您需要将其部署到Sharepoint时,请使用工具在构建后对其进行签名。这是一个完全正确的工具:

http://signer.codeplex.com/Wikipage

你也可以手动完成,但它是PITA:

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

答案 2 :(得分:0)

这是OP但我没有OpenID登录,所以我想我不能像我一样回复。

感谢您的回复。我认为要么会有效,但情况会变得更复杂一些。我在这里记录了我的发现,以防其他人感兴趣。

实际上,sharepoint引用程序集A和程序集A依次引用程序集B.

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

虽然可能有一种方法可以做到这一点,但我们认为可能的DLL冲突和配置控制问题,使用不同的同名DLL集合并不值得麻烦。

因此我们决定在所有版本中对这两个程序集进行签名,并在必要时将代码重构到不同的程序集中,以确保只有最少量的代码在签名的代码中,因此它们不太可能发生更改。