C# 如何合并WPF应用程序的程序集?

C# 如何合并WPF应用程序的程序集?,c#,wpf,ilmerge,C#,Wpf,Ilmerge,我尝试在基于WPF的项目(VS2010,Net4.0)上使用ILMerge,但无法运行合并的可执行文件。所以我创建了两个非常简单的项目 只是一个输出hello world的控制台应用程序 wpf应用程序,显示带有hello world标签的窗口 编译完每个项目后,我会得到一个可执行文件(所以合并并不真正合并任何东西,它只是为了测试)。当然,每个可执行文件都可以工作 然后,我以这种方式“合并”每个可执行文件: "C:\Program Files\Microsoft\ILMerge\ilmerg

我尝试在基于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
(我之所以调用multiline就是为了可读性)。好的,现在控制台应用程序被合并并像以前一样运行良好,wpf应用程序被合并而没有任何错误,但我无法运行它。我是说,我打字

Merged.exe
任务栏闪烁,但什么也不显示——没有窗口,没有错误,什么也不显示

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

据我所知(和经验),ilmerge不能正确地处理嵌入了xaml资源的WPF程序集


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

有一个惊人的NuGet包叫做。合并程序集再简单不过了


如果您需要合并资源DLL,那么您很幸运!还有另一个努杰延伸了肋肌。福迪打电话来了

谢谢,似乎合并程序集的成本接近1000美元:-(是的,这有点令人望而却步-我不确定自己是否能证明公司的成本是合理的。我最终做的是合并所有程序集,除了WPF exe程序集。我必须承认,解决问题的一般态度(SmartAssembly)是杰出的。但是10%的价格对我来说是一个延伸。我从Mike Barnett(ILMerge的作者)那里得到一个明确的词——它不能合并WPF应用程序。句号。因此,我可能会以您的解决方案结束。您可以将程序集视为资源,请参见我的答案[此处][1]。[1]:可能的重复