【问题标题】:How to Fix, Could not load file or assembly 'XXX' or one of its dependencies. Strong name signature could not be verified如何修复,无法加载文件或程序集“XXX”或其依赖项之一。无法验证强名称签名
【发布时间】:2013-12-11 07:09:46
【问题描述】:

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

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

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

【问题讨论】:

  • 你从哪里引用 System.Web.Mvc?
  • 在我的示例项目中。
  • @DarinDimitrov,其实我想调试 MVC
  • 但是你为什么要构建自己的 System.Web.Mvc 版本???不要那样做。
  • 为什么不呢,这就是开源的意义,对吧?

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


【解决方案1】:

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

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

【讨论】:

  • 但在旧版本中它非常琐碎,blog.stevensanderson.com/2009/02/03/…
  • 已尝试绕过TrustedAppStrongNames 和AllowStrongNameBypass。但什么也没有发生。此验证在哪里触发?
  • 是的,在旧版本中,对 System.Web.Mvc 的依赖并不多。那些绕过是行不通的。除非您完全重新编译您在项目中使用的并且依赖于 System.Web.Mvc 的每个程序集,否则您无能为力。但我已经在我的回答中表达了我个人的看法。祝你好运。
  • 好的,谢谢您的开放
  • 使用 .NET Source Stepping 对我不起作用 - 调试体验很差:我看不到一些局部变量并单步执行某些函数(都在 System.Web.Mvc 程序集中)不起作用,因为它们已被优化 - 以及其他问题。我对 RedGate 的 Reflector VS 扩展也有类似的问题 - 所以从源代码重建是我唯一的选择。
【解决方案2】:

刚刚解决了同样的问题:

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

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

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

【讨论】:

  • 在每个有问题的项目的属性上取消选中“签名”选项卡上的“签署程序集”解决了我的问题。
  • 尝试使用自建的EntityFramework DLL。
【解决方案3】:

我以前有过这个,删除对 System.Web.Mvc 的引用并重新添加它有效。

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

希望有帮助

【讨论】:

  • 我需要调试 MVC 源码
  • 对不起,我错过了阅读问题。我同意@DarinDimitrov,您不应该有任何理由创建自己的 Mvc 版本。你到底在做什么?
【解决方案4】:

在 AssemblyInfo.cs 文件中会有一行 [程序集:System.Reflection.AssemblyDelaySign(true)],如果将其删除,GAC 问题将得到解决

【讨论】:

    【解决方案5】:

    我尝试使用 Visual Studio 性能分析器分析我的应用程序,但第三方程序集出现此错误。我做了一个干净并重新构建的解决方案,它奏效了。

    【讨论】:

      猜你喜欢
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      • 2021-12-12
      • 2012-01-14
      • 1970-01-01
      相关资源
      最近更新 更多