繁体   English   中英

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

[英]How to Fix, Could not load file or assembly 'XXX' or one of its dependencies. Strong name signature could not be verified

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

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

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

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

我个人觉得构建自己的 System.Web.Mvc 版本极其困难。 在实践中,我使用公开可用的 PDB 符号调试源代码。 所以我建议你不要编译自己的版本,而是使用官方版本。 看看这篇文章: https : //stackoverflow.com/a/13610108/29407

刚刚解决了同样的问题:

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

我还从 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 性能分析器分析我的应用程序,但第三方程序集出现此错误。 我做了一个干净和重新构建的解决方案,它奏效了。

将此行添加到您的配置文件中:< hostingEnvironment shadowCopyBinAssemblies="false"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM