プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[C#] EXEとDLLをマージして1つのEXEファイルにする

C#でプログラムを作成する際に参照設定で追加していると、ビルドフォルダにはDLLファイルがコピーされます。
これらのDLLファイルがないと実行できないので、配布する際にはDLLと一緒にコピーする必要があります。
大きなプログラムならそれでいいんですが、ちっさなおまけプログラムの場合、EXEだけコピーして実行できたら便利です。

そういう時は、EXEファイルにDLLファイルをマージして1ファイルにすることができます。

1. ILMergeをインストールする
http://www.microsoft.com/en-us/download/details.aspx?id=17630

2. EXEファイル出力フォルダでコマンドを実行する
“c:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe” /wildcards /out:Test_merge.exe Test.exe *.dll

※実行したらエラーになった
An exception occurred during merging:
Unresolved assembly reference not allowed: WindowsBase.

.NET Frameworkの場所を追加するといいらしい 実際にコンパイルに使用している.NET Frameworkのパスを指定する
“c:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe” /wildcards /out:Test_merge.exe Test.exe *.dll /targetplatform:v4,”C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6″

マージ後のファイルサイズは単純にすべてのファイルのサイズを足したくらいのサイズになる。
EXEはできても実行できない場合がある。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください