目前我有System.Web.Mvc程序集的源代码。建筑很好。但是在运行时它会抛出,
无法加载文件或程序集“System.Web.Mvc”或其依赖项之一。 强名称签名无法验证。该组件可能已被篡改 使用,或者是延迟签名但未使用正确的私钥完全签名。 (HRESULT异常:0x80131045)
我该如何调试?我正在使用Windows 7。
答案 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)
刚刚解决了同样的问题:
我还从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性能分析器对我的应用程序进行分析,并在第三方程序集中出现此错误。我做了一个干净的,重新构建的解决方案,并且工作正常。