.NET アプリを作っていると、参照する自作アセンブリが増えてきました。そこで、複数のアセンブリを実行ファイルとマージする(まとめる)ために、ILMerge を試しました。また、public
なクラスなどのアクセス修飾子を internal
に変更して、外部から参照できないようにできるので、そちらも試してみました。
もくじ
ILMerge の入手方法
下記のサイトからダウンロードできます。
GitHub – dotnet/ILMerge: ILMerge is a static linker for .NET Assemblies.
ILMerge is a static linker for .NET Assemblies. Contribute to dotnet/ILMerge development by creating an account on GitHub.
実行方法
例として、C:\TestSolution
ソリューション内の App.exe
と Common.dll
をマージして AppMerged.exe
を作成することにします。

下記のコマンドを実行します。
- 2 行目:今回は対象のフレームワークが .NET 4.5.1 なので、このように指定しています。別のバージョンなら、指定を変更する必要があります。
- 3 行目:複数のアセンブリがマージされた結果、作成されるアセンブリのパスを指定します。
- 4,5 行目:マージ対象のアセンブリのパスを指定します。たくさんある場合は行を増やして指定できます。
- 6 行目:
public
なアクセス修飾子を、internal
に変換する場合の指定。変換しないなら、この指定は不要です。
ビルドのたびに実行する
MSBuild プロジェクト上で、ビルド イベントのビルド後に実行するコマンドラインに設定しておくと、ビルドのたびに自動でマージが行われるので便利です。
$(TargetDir)
などのマクロは、コマンド実行時に展開されます。
0