我尝试在基于WPF的项目(VS2010,Net4.0)上使用ILMerge,但我无法使合并的可执行文件运行。所以我创建了两个非常简单的项目
在编译每个项目之后,我获得了单个可执行文件(因此合并,并不真正合并任何东西,它只是用于测试)。每个可执行文件当然都有效。
然后我以这种方式“合并”每个可执行文件:
"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
(我为了SO的可读性而打电话给多线)。好的,现在控制台应用程序已合并并运行与以前一样好,wpf应用程序合并没有任何错误,但我无法运行它。我的意思是,我输入
Merged.exe
任务栏闪烁,但没有任何显示 - 没有窗口,没有错误,没有。
那么我应该如何合并WPF app?
答案 0 :(得分:2)
据我所知(并且经历过),ilmerge无法正确使用嵌入了xaml资源的WPF程序集。
答案 1 :(得分:1)
如果我理解正确,您希望将所有程序集嵌入到一个exe中。
有一个名为Costura.Fody的神奇NuGet包。合并装配不容易!
如果您需要合并资源DLL,那么您很幸运!还有另一个NuGet扩展了Costura.Fody,名为Resource.Embedder!