ILMerge 和 MSBuild - 合并的 EXE 给出运行时错误

发布于 2024-11-30 14:27:25 字数 384 浏览 3 评论 0原文

将 ILMerge 添加到我的构建后任务并制定命令行后,我成功获得了合并程序 MyMerged.exe

但当我运行它时,我收到异常

Unhandled Exception: System.TypeLoadException: 无法从程序集“mymerged,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”加载类型“Microsoft.Build.Utilities.TaskItem”,因为方法“.ctor”没有实现(无 RVA)。 at MyProgram.Program.Main(String[] args)

这是 ILMerge 中不处理没有构造函数的情况的错误,还是 TaskItem 中没有构造函数的错误。

谢谢

After adding ILMerge to my post build tasks and working out the commandline, I sucessfully get a merged program MyMerged.exe

But when I run it, I get an exception

Unhandled Exception: System.TypeLoadException:
Could not load type 'Microsoft.Build.Utilities.TaskItem' from assembly 'mymerged, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because the method '.ctor' has no implementation (no RVA).
at MyProgram.Program.Main(String[] args)

Is this a bug in ILMerge not handling a situation where there is no constructor, or a bug in TaskItem for not having one.

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花桑 2024-12-07 14:27:25

在 ILMerge 命令行上包含 Microsoft.Build.Utilities.dll,以便将其合并到程序集中并找到。

如果定义了重复类型并使用 /allowDup 命令行开关,ILMerge 将重命名重复类型,这也可能导致“无法加载类型...”错误和运行时的意外行为,尤其是当使用反射时。

Include Microsoft.Build.Utilities.dll on the ILMerge command line so that it will get merged in with your assembly and found.

If you have duplicate types defined and use the /allowDup command line switch, ILMerge will rename the duplicate types and this may also cause "Could not load type ..." errors and unexpected behavior during runtime, especially when reflection is being used.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文