2009-05-19 1 views
1

私はAssemblyBuilderを使って別のアセンブリを動的に生成する実行アセンブリを持っています。AssemblyBuilderを使用して、保存されたアセンブリにリンクされているのではなく、参照されているアセンブリのすべてまたは任意のものを埋め込むことはできますか?

生成されたアセンブリは、実行アセンブリ内の特定のクラスの構築を単純にテストする関数で構成されています。生成されたアセンブリ内の関数は、実行アセンブリ内のクラスを参照するので、実行アセンブリは、作成したアセンブリに自身を埋め込むようにしたい。

これまでは、実行アセンブリにリンクするアセンブリを生成することしかできませんでしたが、アセンブリを組み込むアセンブリは生成できませんでした。最終的なアセンブリ(.dll)が1つしかないことは重要です。

リソースとしてアセンブリを埋め込む必要はありますか?もしそうなら、どうですか?それが唯一の方法でない限り、組み込みアセンブリを動的にロードするコードを書く必要はありません。私はAssemblyBuilder.EmbedAssembly(GetExecutingAssembly())のような簡単なものを探しています。

答えて

2

簡単な方法はありません。 managed resourcesとして

  • 埋め込み参照されるアセンブリ、およびオンデマンドでresource streamからassembly load hookことになるload the assembliesを発する:あなたは、少なくとも2つの選択肢があります。
  • ILMergeを使用してポスト放出ステップを使用して、すべてのアセンブリをマージします。
+0

最初のオプションはどのようにすればよいですか?私はILMergeを使用したくないですが、ILMergeが内部的に達成する最初の選択肢ですか? – Triynko

+0

私は適切なAPIへのリンクを追加しました。それはILMergeのことではありません。 ILMergeは実際に他のアセンブリのセットから1つのアセンブリを作成します。最初のソリューションは、複数のアセンブリをリソースとして別のアセンブリに組み込むことです。 –

+0

1つのクラスといくつかのメソッドしかない実行可能でないDLLにアセンブリロードフックを出力するにはどうすればよいですか?また、参照されたdllをリソースとして埋め込む方法もわかりません。 – Triynko

関連する問題