.NET Framework アプリケーションのアセンブリDLLを単一のEXEファイルにまとめる - ILMergeを利用したアセンブリDLLのマージ

ILMergeを利用してアセンブリDLLを結合して単一のEXEファイルを作成する手順を紹介します。

概要

.NET Frameworkでアプリケーションを作成した場合、ライブラリDLLはアセンブリDLLとしてexeファイルと同じディレクトリに配置されます。通常はそのままで問題ありませんが、配布時にアセンブリDLLも合わせて配布する必要があるため、アセンブリの数が多い場合、単一のexeファイルにアセンブリDLLをまとめてしまいたいことがあります。
ILMergeを利用すると、アセンブリDLLをExeファイルにマージできます。

事前準備

ILMergeをインストールします。ILMergeのインストール手順は「ILMerge のインストール - NuGetを利用したインストール」の記事を参照してください。

マージ手順

以下のコマンドを実行します。
.NET Framework 4のアプリケーションの場合
ILMerge.exe /v4 /out:(出力exeファイル名) (元のexeファイル名) (マージするアセンブリDLL1) (マージするアセンブリDLL2) ... (マージするアセンブリDLLn)
.NET Framework 2のアプリケーションの場合 (.NET Framewrk 3 / 3.5 など)
ILMerge.exe /v2 /out:(出力exeファイル名) (元のexeファイル名) (マージするアセンブリDLL1) (マージするアセンブリDLL2) ... (マージするアセンブリDLLn)

.NET Framework 1のアプリケーションの場合

ILMerge.exe /v1 /out:(出力exeファイル名) (元のexeファイル名) (マージするアセンブリDLL1) (マージするアセンブリDLL2) ... (マージするアセンブリDLLn)

下記のフォルダのiPentecText.dllをiPentecTextTest.exeにマージして単一のExeファイルで実行できるようにします。


下記のコマンドを実行します。
"c:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe" /v4 /out:iPentecTextTestM.exe iPentecTextTest.exe iPentecText.dll



正常に実行されると出力ファイルとして設定したファイル名のファイルが作成されます。


マージされたExeファイルを別のディレクトリにコピーし、単体のExeファイルだけで実行できるか確認します。

補足:Visual Studioでビルド後にILMergeを実行する

Visual Studioでビルド完了時に自動でILMergeを実行すると、ビルド成功後にマージされたExeファイルを自動で作成できます。
プロジェクトのプロパティを表示します。プロパティ画面はソリューションエクスプローラのプロジェクトノードを選択し、右クリックでポップアップメニューを表示し[プロパティ]メニューを選択すると表示できます。


左側のメニューの[ビルドイベント]メニューを選択します。下図の画面が表示されます。


[ビルド後に実行するコマンドライン]にコマンドを記述します。


コマンド実行時のカレントディレクトリはビルド結果の出力ディレクトリになっているため、今回の場合は、下記のコマンドを設定します。
"c:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe" /v4 /out:iPentecTextTestM.exe iPentecTextTest.exe iPentecText.dll

著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2024-01-07
作成日: 2015-01-30
iPentec all rights reserverd.