2010-05-05 61 views
1

我有一个VB.Net 1.1应用程序在Visual Studio中编译后工作得很好。但是,我想使用ILMerge将所有引用的程序集合并到一个可执行文件中,以便更轻松地移动。之后,我通过ILMerge发送,并尝试运行它,我得到的错误在VB.NET程序集中强名称验证失败

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

但没有我的东西是强命名!我在这里看到了这个帖子:Strong Name Validation Failed并试图通过“SN.EXE -Vr merged.exe”运行它,但是这给了我这个错误:

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

有其他人之前有过这个问题吗?我如何解决它?

UPDATE:

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

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

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

+0

记录您使用的参考文献。在解决方案资源管理器中单击“显示所有文件”图标并打开“引用”节点。 – 2010-05-05 12:49:49

+0

我所引用的是COM互操作程序集和标准系统程序集。我不内化Interop程序集,只有作为此项目一部分的程序集(一个可执行文件和DLL),两者都没有签名。没有任何引用的程序集都被签名(Core .NET程序集除外;但是,我没有内化这些程序集)。 – 2010-05-05 13:01:37

回答

1

为了让我的合并二进制文件能够正常工作,我必须找到并下载一个非常旧版本的ILMerge(v1.1);当前ILMerge应用程序构建.NET 1.1程序集的方式中必定存在一个错误。谢天谢地,我们内部有一个,因为我可能从来没有在网上找到它。