【问题标题】:How do I debug "strong name validation failed"?如何调试“强名称验证失败”?
【发布时间】:2019-04-03 23:49:23
【问题描述】:

我有一个可以在我的旧 Windows 7 计算机上正常运行的程序。我将它的文件夹复制到我的新 Windows 10 计算机(没有需要更复杂安装过程的细节),但它突然无法运行。尝试在命令行上运行它给了我:

未处理的异常:System.IO.FileLoadException:无法加载文件或程序集“foo,Version=2.0.9.4,Culture=neutral,PublicKeyToken=32c39770e9a21a67”或其依赖项之一。强名称验证失败。 (来自 HRESULT 的异常:0x8013141A)---> System.Security.SecurityException:强名称验证失败。 (来自 HRESULT 的异常:0x8013141A) --- 内部异常堆栈跟踪结束 ---

这告诉我一点用处都没有。程序“或其依赖项之一”的强名称验证存在问题,我不知道它是哪一个,而且对于我的生活,我无法弄清楚如何找出问题所在!

我试过 FUSLOGVW。这台计算机上有多个不同的版本,我已经尝试过每一个,一次一个,确保将它们设置为记录绑定失败到光盘,尝试运行失败的程序,然后刷新 FUSLOGVW。什么都没有显示。

我已尝试针对该程序运行 sn.exe -v。它告诉我:

验证程序集失败 -- 强名称验证失败。

同样,这完全没用,因为我不知道发生了什么问题或原因。

我在这里找到了一些关于使用sn.exe 或各种注册表技巧来禁用强名称验证的答案。这不是我想做的;我想弄清楚问题是什么并解决它。再一次,这一切都很好,在我的 Windows 7 机器上使用完全相同的二进制文件。

我如何找出这个程序的强命名验证出了什么问题?

【问题讨论】:

    标签: .net strongname


    【解决方案1】:

    假设程序集可能已在 Windows 7 机器上注册了强名称验证跳过,如果您使用 sn.exe -Vu foo.dllfoo.dll 从验证跳过中取消注册,它会在那里停止工作吗?在这种情况下,您可能别无选择,只能在 Windows 10 机器上使用 sn.exe -Vr foo.dll 来启用该程序集的验证跳过。您是否尝试第二次从 Windows 7 机器复制程序集以从可能的答案集中排除随机损坏?组装延迟是否已签署或类似的东西? Windows 7 机器的 GAC 中是否有该程序集的工作版本?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-05
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多