5

WPFベースのプロジェクト(VS2010、Net4.0)でILMergeを使用しようとしましたが、マージされた実行可能ファイルを実行できませんでした。だから私は2つの非常に単純なプロジェクトを作成しました

  • helloworldを出力する単なるコンソールアプリケーション
  • helloworldラベルの付いたウィンドウを表示する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アプリをどのようにマージする必要がありますか?

4

2 に答える 2

4

私が知っている(そして経験した)ことから、ilmergeはxamlリソースが埋め込まれているWPFアセンブリでは正しく機能しません。

いくつかの可能な解決策/代替案については、この質問を参照してください

于 2010-08-17T08:03:29.430 に答える
2

私が正しく理解していれば、すべてのアセンブリを1つのexeに埋め込む必要があります。

Costura.Fodyと呼ばれる素晴らしいNuGetパッケージがあります。アセンブリのマージはこれ以上ないほど簡単です。

リソースDLLをマージする必要がある場合は、幸運です。Resource.Embedderと呼ばれるCostura.Fodyを拡張する別のNuGetがあります。

于 2017-12-17T17:33:58.467 に答える