由于各种原因,我宁愿不在我的项目中使用强命名(签名)程序集。但是,其中一个项目被 Sharepoint Web 部件引用,这意味着它必须经过签名。
是否可以签署这个程序集,但是当我从其他项目中引用它时,使用非强引用来这样做。这将为我的其余代码提供未签名程序集的优势,但仍允许它由共享点加载。
由于各种原因,我宁愿不在我的项目中使用强命名(签名)程序集。但是,其中一个项目被 Sharepoint Web 部件引用,这意味着它必须经过签名。
是否可以签署这个程序集,但是当我从其他项目中引用它时,使用非强引用来这样做。这将为我的其余代码提供未签名程序集的优势,但仍允许它由共享点加载。
最简单的方法可能是拥有两种不同的项目配置——一种构建强命名程序集,另一种不构建。显然,您需要小心如何构建和引用程序集,但这与具有冲突需求的领域有关。
Just keep building your project w/o strong names. When you need to deploy it to Sharepoint, use a tool to sign it after it is built. Here's a tool that does exactly that:
http://signer.codeplex.com/Wikipage
You can also do it manually, but it's a 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 集是不值得的。
因此,我们决定在所有构建中对这两个程序集进行签名,并在必要时将代码重构为不同的程序集,以确保只有最少量的代码包含在已签名的程序集中,这样它们就不太可能发生变化。
蒂姆