2

2 つのファイルをマージしようとしています。1 つは .net3.5 wpf アプリケーションで、もう 1 つはWPF 通知アイコン dllです。

次のコマンドを使用します。

IlMerge /target:winexe /out:PS.exe "PlayerSearcher.exe" "Hardcodet.Wpf.TaskbarNotification.dll"

しかし、結果アセンブリを起動すると、アプリケーションがこのエラーでクラッシュします

EventType : clr20r3 P1 : ps.exe
P2 : 1.0.0.0 P3 : 4c0ee52f P4 : presentationframework P5 : 3.0.0.0 P6 : 4938d608 P7 : 9a1 P8 : 46 P9 : system.io.ioexception

なんで?また、単一ファイルのアプリケーションを構築するにはどうすればよいですか?

4

1 に答える 1

1

推測ですが、追加の参照をマージする必要があるかもしれません。たとえば、someelse.dll を EXE と一緒にプロジェクトの bin フォルダーにコピーしていて、それを含めるのを忘れていたのではないでしょうか?

ただし、「ローカル コピー」の True/False 設定に問題がない限り、GAC から .NET Framework アセンブリをマージする必要はありません。

これで、変更したプロジェクトには、参照されているすべてのアセンブリが自動的にマージされます。「ローカルにコピー」とマークされたアセンブリのみがマージされるため、システム アセンブリと GAC アセンブリは既定ではマージされません。

-- http://blogs.msdn.com/b/jomo_fisher/archive/2006/03/05/544144.aspx

おそらく、それをデバッグするために、.NET Framework クラスをプロジェクトにローカルにコピーし、それらもマージして、それが機能するかどうかを確認してください。これは、エラーの特定を開始するのに役立つ場合があります。

于 2010-06-08T22:20:42.133 に答える