如何完全禁用已签名的程序集?

3
我有一个VS.NET 2010解决方案,其中包含几个项目。我刚刚添加了一个新的库项目(the.library.assembly)。启动项是一个网站。当我运行网站时,出现以下错误:
“无法加载文件或程序集'the.library.assembly'或其某个依赖项。强名称签名无法验证。该程序集可能已被篡改,或者它是延迟签名,但未用正确的私钥完全签名。(来自 HRESULT: 0x80131045)”
这是从何而来?我之前没有在其他项目中使用签名程序集,它们都能正常工作。
---编辑---
实际上,我发现the.library.assembly已经进行了签名。这与解决签名问题有关。我在项目属性中取消了签名并遍历了解决方案中的所有项目。没有任何一个项目被签名。现在我遇到了构建错误。
Assembly generation failed -- Referenced assembly 'the.library.assembly' does not have a strong name.

我认为这可能与the.library.assembly引用的WCF服务有关。我移除了该服务及相关代码,一切都能够成功构建。然后我将服务添加回去,再次进行构建,也顺利通过。接着,我将与服务相关的代码添加到the.library.assembly中,依然能够构建成功。但是,当我将the.library.assembly的调用添加到web应用程序中时,就出现了上述构建失败的情况。


1
该程序集很可能是由未受信任的证书签名的。我建议您使用有效的证书进行签名,或者干脆不进行签名,当然您需要对所有程序集进行签名或全部不进行签名。 - Security Hound
我在原始帖中添加了一些额外的细节。现在所有内容都是非签名的,但构建失败了。 - 4thSpace
1个回答

1

我发现有关在 Web 应用程序的 AssemblyInfo.cs 中签名的条目。将其注释掉后,解决方案就可以构建。


非常感谢!在我的情况下,我发现了三个与签名相关的行,我从AssemblyInfo.cs中删除了它们:[assembly: AssemblyDelaySign(false)] [assembly: AssemblyKeyFile("....")] [assembly: AssemblyKeyName("")] - Sphinxxx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接