.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にまとめようとしている。
| |
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を/logオプションを付けて実行した場合に表示されるメッセージである。
Gilmaの処理結果メッセージ |
Gilmaは内部でILMergeを実行してファイルのマージを行う。このメッセージは/logオプション付きで実行されたILMergeが出力したメッセージ。 |
この例の場合にはGilma1.exeが作成される。そしてこのEXEファイルは、DLLファイル(GilmaLogic.dll)なしで実行できる。
利用可能バージョン:.NET Framework 2.0のみ カテゴリ:開発環境&ツール 処理対象:ツール |
|
「.NET TIPS」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|