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

问题描述 投票:4回答:2

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

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

在编译每个项目后,我获得了单个可执行文件(因此合并,并不真正合并任何东西,它仅用于测试)。每个可执行文件当然都有效

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

"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应用呢?

c# wpf ilmerge
2个回答
2
投票

据我所知(并且经历过),ilmerge无法正确使用嵌入了xaml资源的WPF程序集。

See this question for some possible solutions/alternatives


1
投票

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

有一个惊人的NuGet包叫做Costura.Fody。合并程序集不容易!

如果你需要合并资源DLL,你很幸运!还有另一个扩展Costura.Fody的NuGet叫做Resource.Embedder

© www.soinside.com 2019 - 2024. All rights reserved.