C#で複数のアセンブリを束ねる方法
概要 .NET Framework 環境下にて、複数のクラスライブラリを1つのクラスライブラリへ束ねる方法を紹介する。 動機 PluginOrganizer では、外部のライブラリを依存させているが、実装当時の時間的制約によりライブラリのソースコードを本体に取り込んでビルドする方法を採っている。 実際には外部のライブラリを依存させつつ本体に1つに束ねる方法があるので、どのような方法が有効であるのか考えることとした。 手段 ILMerge https://github.com/dotnet/ILMerge プロジェクト中で参照している CIL の複数のアセンブリを、恐らく「ビルド後イベント」で 1つ のアセンブリに統合する。 ILMerge is a utility that merges multiple .NET assemblies into a single assembly. It is freely available for use and is available as a NuGet package. 所感 前に試してうまくいかなかった。 WPF アプリケーションではうまくいかないようだ。( WPF を使うわけではないんだけど。) アセンブリを埋め込みリソースにする WPFアプリケーションをEXEひとつにまとめる - secretbase.log@cointossさん Merging dlls into a single .exe with wpf - stackoverflow アセンブリを「埋め込みリソース」としてまとめたいアセンブリに埋め込んでしまい、解決は AppDomain.CurrentDomain.AssemblyResolve イベントで動的に行う。 所感 試したらうまくいった。 Bve 5 / 6 系で ....