個人的備忘録

調べたり思いついたりした事の置き場

Fody.Costuraを利用して複数のアセンブリをまとめ、単一の実行ファイルを作成する

これまで、複数アセンブリをまとめる場合MicrosoftのILMergeを利用していた。

https://www.microsoft.com/en-us/download/details.aspx?id=17630

ILMergeはコマンドラインツールなので、プロジェクトのビルド後のイベントに実行コマンドを記述して利用していたのだが、アセンブリが増えたり減ったりする度にコマンドを編集しなければならず結構不便だった。
Fodyは.Netのビルドフローの中で色々やるAPIを提供するプラットフォーム。
CosturaはFodyで動作するプラグインで、プロジェクト内のアセンブリを自動的に実行ファイルにマージしてくれる。

インストール

NuGetからCostura.Fodyを検索してインストールする。

使用方法

プロジェクト内のすべてのアセンブリを一つにまとめたいだけの場合、特に何もする必要はない。 Costuraインストール後にビルドを行うだけで自動的にアセンブリがマージされる。
特定のアセンブリを除外したい場合、Costuraインストール時にプロジェクトに追加されるFoyWeavers.xmlファイルを編集する。
例えば、Moqを除外したい場合はこのような感じ。

<?xml version="1.0" encoding="utf-8"?>
<Weavers>
  <Costura>
      <ExcludeAssemblies>
          Moq
      </ExcludeAssemblies>
  </Costura>
</Weavers>