私は、コンポーネント/アセンブリをソースコードの観点から明確に分離しておきたいと思っていますが、同じdllでそれらをパッケージ化するために、状況によっては(おそらく拡張に関係しないかもしれません)必要があります。dllに複数の.NETアセンブリをパッケージ化する方法はありますか?
複数の.NETアセンブリを1つのDLLにパッケージ化することはできますか?もしそうなら、どのように?
可能であれば、それは良いアイデアだと思いますか?どうして?
私は、コンポーネント/アセンブリをソースコードの観点から明確に分離しておきたいと思っていますが、同じdllでそれらをパッケージ化するために、状況によっては(おそらく拡張に関係しないかもしれません)必要があります。dllに複数の.NETアセンブリをパッケージ化する方法はありますか?
複数の.NETアセンブリを1つのDLLにパッケージ化することはできますか?もしそうなら、どのように?
可能であれば、それは良いアイデアだと思いますか?どうして?
チェックアウトこの記事は:あなたが知っているようにMerging .NET assemblies using ILMerge
、 オブジェクトコードの伝統的なリンクはもはや必要 .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
ILMerge
は、2つのアセンブリを1つにマージできます。
詳細については、hereを参照してください(クロスランゲージ用の例ですが、どのようなツールでもアセンブリを作成できます)。
明らかに、個々のアセンブリ(プリマージ)の依存関係は更新/リダイレクトする必要があります。
しかし、これはDLL(?)ではなくEXEファイルを生成します。 –
出力と同じものをdllで実行可能にする必要があります - 私は推測します... – JohnIdol