5

我尝试在基于 WPF 的项目(VS2010、Net4.0)上使用 ILMerge,但无法使合并的可执行文件运行。所以我创建了两个非常简单的项目

  • 只是一个打印出 hello world 的控制台应用程序
  • wpf 应用程序,它显示带有 hello world 标签的窗口

编译每个项目后,我得到一个可执行文件(所以合并,并没有真正合并任何东西,它只是为了测试)。当然,每个可执行文件都有效。

然后我以这种方式“合并”每个可执行文件:

"C:\Program Files\Microsoft\ILMerge\ilmerge" 
    /targetplatform:v4,c:\Windows\Microsoft.NET\Framework\v4.0.30319 
    /lib:c:\Windows\Microsoft.NET\Framework\v4.0.30319\wpf 
    /out:Merged.exe MyApplication.exe

(我之所以调用多行代码只是为了便于阅读)。好的,现在控制台应用程序已合并并像以前一样正常运行,wpf 应用程序已合并没有任何错误,但我无法运行它。我是说,我打字

Merged.exe

任务栏闪烁,但什么也没有出现——没有窗口,没有错误,什么也没有。

那么我应该如何合并 WPF 应用程序呢?

4

2 回答 2

4

据我所知(并且经历过),ilmerge 无法与嵌入了 xaml 资源的 WPF 程序集一起正常工作。

有关一些可能的解决方案/替代方案,请参阅此问题

于 2010-08-17T08:03:29.430 回答
2

如果我理解正确,您希望将所有程序集嵌入到一个 exe 中。

有一个很棒的 NuGet 包,名为Costura.Fody。合并程序集再简单不过了!

如果您需要合并资源 DLL,那么您很幸运!还有另一个 NuGet 扩展了 Costura.Fody,名为Resource.Embedder

于 2017-12-17T17:33:58.467 回答