我试图在我的基于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应用呢?
据我所知(并且经历过),ilmerge无法正确使用嵌入了xaml资源的WPF程序集。
如果我理解正确,您希望将所有程序集嵌入到一个exe中。
有一个惊人的NuGet包叫做Costura.Fody。合并程序集不容易!
如果你需要合并资源DLL,你很幸运!还有另一个扩展Costura.Fody的NuGet叫做Resource.Embedder!