【发布时间】: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