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

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

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

我该怎么调试呢? 我正在使用Windows 7。

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

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

刚刚解决了同样的问题:

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

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

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

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

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

希望有所帮助

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

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