実行ファイル(EXE)とDLLを1つにまとめる方法

実行ファイルにDLLをまとめる方法を探すと、いくつかある。ILMergeを使う方法があるが、使ったことはないので触れない。実際に自分が使っている方法について書く。

Fody (Costura.Fody) .NET Framework

FodyはNuGetパッケージのひとつ。.NET Frameworkではこれを使うのが便利。.NET Standard等もサポートされているようだが試したことはない。

これを利用することで、DLLファイルをEXEファイルに統合することが出来る。具体的には、Costura.Fodyをインストールするだけで良い。Fodyも依存関係があるため、自動的にインストールされる。

ビルド対象となるプロジェクト全てにCostura.Fodyがインストールされていれば、特に設定は不要。普通にビルドするだけで良い。

単一ファイルの作成 .NET

.NET(.NET Frameworkではない)では、「単一ファイルの作成」というチェックボックスが追加されている。このチェックを入れるだけで、DllがEXEファイルに統合される。

具体的には、ビルドから「選択範囲の公開」を選択して、「全ての設定を表示」をクリックする。プロファイル設定で「ファイルの公開オプション」を開き、「単一ファイルの作成」のチェックを入れる。

「発行」をクリックすれば、ビルドが実行される。

ビルド結果

いずれの場合でも、単一のEXEファイルだけがビルドされる。