【问题标题】:Strong name validation failed on VB.NET AssemblyVB.NET 程序集上的强名称验证失败
【发布时间】:2010-05-05 10:52:54
【问题描述】:

我有一个 VB.Net 1.1 应用程序在 Visual Studio 中编译后运行良好。但是,我想使用 ILMerge 将所有引用的程序集组合成一个可执行文件,以便更容易移动。在我通过 ILMerge 发送它并尝试运行它后,我得到了错误

“assembly.exe 的强名称验证失败”.....

但是我的东西都没有强大的名字!我在这里看到了这篇文章:Strong Name Validation Failed 并尝试通过 'sn.exe -Vr mapped.exe' 运行它,但这给了我这个错误:

“merged.exe 不代表强命名程序集”

以前有没有其他人遇到过这个问题?我该如何解决?

更新:

我开始觉得强名称验证不是这里的真正问题。我正在针对 .NET v1.1 构建并在仅安装了 .NET 版本的机器上运行(可能是 Windows 2003)。合并的可执行文件在我尝试的每台 Windows 2003 机器上似乎都因该错误而死,但如果我尝试在更现代的操作系统(Vista)上运行它,它至少会启动,但这并不是一个很好的测试,因为环境不是适合实际测试。

  • 我已验证我的 app.config 具有正确的设置(指定 v1.1.4322 所需和支持的运行时版本)
  • 通过 ILMerge 运行我的程序集时,我使用 /targetplatform:v1.1 选项。

ILMerge 肯定会导致问题(即在我合并之前它工作正常),我只是不知道如何解决它。

【问题讨论】:

  • 记录您使用的参考文献。单击解决方案资源管理器中的“显示所有文件”图标并打开“引用”节点。
  • 我所引用的只是一个 COM 互操作程序集和标准系统程序集。我没有内部化 Interop 程序集,只有属于该项目的程序集(一个可执行文件和一个 DLL),它们都没有签名。引用的程序集也没有签名(Core .NET 程序集除外;但同样,我没有将这些程序集内部化)。

标签: vb.net strongname ilmerge


【解决方案1】:

我必须找到并下载一个非常旧的 ILMerge (v1.1) 版本才能使我的合并二进制文件正常工作;当前的 ILMerge 应用程序构建 .NET 1.1 程序集的方式一定存在错误。幸好我们内部有一个,因为我可能永远不会在网上找到它。

【讨论】:

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