如何修复,无法加载文件或程序集“XXX”或其依赖项之一。强名称签名无法验证

时间:2013-11-26 08:40:14

标签: c# asp.net asp.net-mvc

目前我有System.Web.Mvc程序集的源代码。建筑很好。但是在运行时它会抛出,

  

无法加载文件或程序集“System.Web.Mvc”或其依赖项之一。       强名称签名无法验证。该组件可能已被篡改       使用,或者是延迟签名但未使用正确的私钥完全签名。       (HRESULT异常:0x80131045)

我该如何调试?我正在使用Windows 7。

5 个答案:

答案 0 :(得分:17)

您似乎正在尝试调试ASP.NET MVC源代码并构建了自己的System.Web.Mvc程序集版本。这种方法的问题是你不能用官方密钥签名。这意味着您可能正在使用并依赖于System.Web.Mvc的任何第三方组件也应该根据您自己的版本进行重新编译。以Razor为例。它还取决于System.Web.Mvc。你也重新编译了吗?

我个人觉得构建自己的System.Web.Mvc版本非常困难。实际上,我使用公开的PDB符号来调试源代码。所以我建议你不要编译自己的版本,而是与官方版本一起工作。看一下这篇文章:https://stackoverflow.com/a/13610108/29407

答案 1 :(得分:4)

刚刚解决了同样的问题:

  • 使用asp.net源代码构建解决方案(我的名称为'Runtime.sln')
  • 从中卸载测试文件夹
  • 打开 系统 .Web.Mvc项目的属性
  • 取消选中登录登录标签
  • 尝试重建解决方案
  • 取消选中每个失败项目的签名选项卡

我还从AssemblyInfo.cs中的InternalsVisibleTo属性中删除了强名称详细信息,但只有在您想要构建测试项目时才需要它。

之后我将System.Web.Mvc,System.Web.WebPages.Deployment和System.Web.WebPages项目作为现有项目添加到我的新解决方案中,现在我可以调试它们的源代码。

答案 2 :(得分:1)

之前我已经有了这个并删除了对System.Web.Mvc的引用并重新添加它。

我也做了一个干净的重建工作。

希望有所帮助

答案 3 :(得分:0)

在AssemblyInfo.cs文件中会有一行 [assembly:System.Reflection.AssemblyDelaySign(true)],如果删除此项,将解决GAC问题

答案 4 :(得分:0)

我尝试使用Visual Studio性能分析器对我的应用程序进行分析,并在第三方程序集中出现此错误。我做了一个干净的,重新构建的解决方案,并且工作正常。