コンポーネント/アセンブリをソースコードの観点から明確に分離したいのですが、状況によっては(おそらく拡張には関係ありません)、同じdllにパッケージ化する必要があります。
単一のdllに多数の.NETアセンブリをパッケージ化することは可能ですか?もしそうなら、どのように?
可能であれば、それは良い考えだと思いますか?なんで?
助けていただければ幸いです。
コンポーネント/アセンブリをソースコードの観点から明確に分離したいのですが、状況によっては(おそらく拡張には関係ありません)、同じdllにパッケージ化する必要があります。
単一のdllに多数の.NETアセンブリをパッケージ化することは可能ですか?もしそうなら、どのように?
可能であれば、それは良い考えだと思いますか?なんで?
助けていただければ幸いです。
この記事をチェックしてください:ILMergeを使用した.NETアセンブリのマージ
ご存知のように、.NETではオブジェクトコードの従来のリンクは不要になりました。.NETプログラムは通常、複数の部分で構成されます。一般的な.NETアプリケーションは、実行可能アセンブリ、プログラムディレクトリ内のいくつかのアセンブリ、およびグローバルアセンブリキャッシュ内のいくつかのアセンブリで構成されます。プログラムが実行されると、ランタイムはこれらすべての部分をプログラムに結合します。コンパイル時のリンクは不要になりました。
ただし、プログラムが実行する必要のあるすべての部分を1つのアセンブリにまとめると便利な場合もあります。たとえば、プログラム、必要なすべてのライブラリ、およびすべてのリソースを1つの.exeファイルに結合することにより、アプリケーションの展開を簡素化することができます。
csc /target:library /out:ClassLibrary1.dll ClassLibrary1.cs
vbc /target:library /out:ClassLibrary2.dll ClassLibrary2.vb
vbc /target:winexe /out:Program.exe
/reference:ClassLibrary1.dll,ClassLibrary2.dll Program.vb
。
ilmerge /target:winexe /out:SelfContainedProgram.exe
Program.exe ClassLibrary1.dll ClassLibrary2.dll
ILMerge2つのアセンブリを1つにマージできます。
詳細については、ここを参照してください(例はクロスランゲージ用ですが、アセンブリを構築したツールであれば何でも機能します)。
明らかに、個々のアセンブリ(プレマージ)への依存関係は、更新/リダイレクトする必要があります。