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

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

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

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

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

http://signer.codeplex.com/Wikipage

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

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

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

感谢您的回复。 我认为要么会奏效,但情况会变得有点复杂。 我已经记录了我的发现,以防其他人感兴趣。

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

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

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

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

蒂姆

Interesting Posts