.NET TIPS

アプリケーションのEXEファイルやDLLファイルを1つにまとめるには?

デジタルアドバンテージ 遠藤 孝信
2006/03/24

 外部のコンポーネント(通常はDLLファイル)などを利用して.NETでアプリケーションを作成する場合、アプリケーション本体(EXEファイル)の実行には当然ながらそれらのDLLファイルが必要になる。しかしアプリケーションをユーザーに配布する場合などでは、ファイルの数は少ない(できれば1つのEXEファイルのみの)方が扱いやすい。

 米Microsoftが無償で提供しているツール「ILMerge」を利用すれば、EXEファイルと、その実行に必要な複数のDLLファイルを1つのEXEファイルにまとめることが可能だ(正確には、ILMergeは複数のアセンブリを1つのアセンブリにマージする)。

複数のファイルを1つにまとめる「ILMerge」

 ILMergeは次のページからダウンロードできる。このページには.NET Framework 2.0用と1.1用のインストール・パッケージ(.msiファイル)が用意されている。

 また、ILMergeに関するより詳細な情報は次のページから参照することができる(これはILMergeの作者であるMichael Barnett氏のページである)。

 ダウンロードした.msiファイルを実行すると、デフォルトでは「C:\Program Files\Microsoft\ILMerge」に「ILMerge.exe」がインストールされる。

 ILMergeはコマンドラインから実行するコンソール・アプリケーションであるため、任意の場所から実行するにはインストールされたディレクトリを環境変数「PATH」に含めるか、PATHに設定されているディレクトリにILMerge.exeをコピーする必要がある(あるいは以下で紹介しているGUIツールを利用すればWindowsアプリケーションとして実行できる)。

ILMergeの基本的な使い方

 ILMergeにはいろいろなコマンドライン・オプションが用意されているが、基本的な使い方としてはコマンド・プロンプトから次のようにして実行する。

 この例では、1つのアプリケーションを構成する3つのファイル(MainApp.exe、ConponentA.dll、ComponentB.dll)を、MergedApp.exeにまとめようとしている。

C:\> ILMerge /out:MergedApp.exe MainApp.exe ComponentA.dll ComponentB.dll
ILMergeの実行例
この例では、MainApp.exeはConponentA.dllおよびComponentB.dllで実装されているクラスを使用しているものとする。/out:オプションは必須で、出力されるEXEファイルのファイル名を指定する。

 なお、/wildcardsオプションを指定すれば、ディレクトリ内のすべてのDLLファイルを「*.dll」により指定できる。また、ILMergeは複数のDLLファイルを1つのDLLファイルにまとめることもできる。詳しくはILMerge.exeと同時にインストールされるドキュメントを参照していただきたい。

ILMerge用GUIツール「Gilma」

 ILMergeはコンソール・アプリケーションであるが、オープンソースとして開発が進められているツール「Gilma」を利用すれば、Windowsアプリケーションとして実行できる。

 Gilmaは次のページからダウンロードできる*

* 本稿執筆時点では、Gilmaのインストール・パッケージである「SetupGilma.msi」は.NET Framework 1.1用であり2.0では実行できない。2.0でGilmaを利用するためには「Gilma-bin.zip」をダウンロードして、任意のディレクトリに展開すればよい。

 次の画面はGilmaによりファイルをマージしようとしているところだ。Gilma自体は「Gilma.exe」と「GilmaLogic.dll」の2つのファイルで構成されているが、ここではそれを1つのファイルまとめようとしている。


Gilmaの実行画面
ここではGilma.exeとGilmaLogic.dllの2つのファイルをGilma1.exeにまとめようとしている。
  インストールされているILMerge.exeのパス名。
  出力されるファイルのパス名。
  元のEXEファイルのパス名。
  EXEファイルの実行に必要なDLLファイルのパス名(複数指定可)。
  この[Merge]ボタンをクリックすればファイルのマージを開始する。

 ファイルのマージが成功すれば次のようなメッセージが表示される。ちなみにこのメッセージは、ILMergeを/logオプションを付けて実行した場合に表示されるメッセージである。


Gilmaの処理結果メッセージ
Gilmaは内部でILMergeを実行してファイルのマージを行う。このメッセージは/logオプション付きで実行されたILMergeが出力したメッセージ。

 この例の場合にはGilma1.exeが作成される。そしてこのEXEファイルは、DLLファイル(GilmaLogic.dll)なしで実行できる。End of Article

利用可能バージョン:.NET Framework 2.0のみ
カテゴリ:開発環境&ツール 処理対象:ツール

この記事と関連性の高い別の.NET TIPS
実行プログラムやライブラリ(DLLファイル)の依存関係を確認するには?
[ASP.NET]ページから生成されたソース・コードを見るには?
Windowsフォームで構成ファイルによりプロパティ値を設定するには?
アプリケーション設定を活用するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間