0

C# .NET 4.6 で実行時にコンパイルされるオブジェクトによって参照される実行時にコードをコンパイルしようとしています。

CSharpCodeProvider を使用してメモリ内に CompilerResult を生成しています。結果のアセンブリは、コンパイルされる 2 番目のコード フラグメントで参照されます。2 番目の部分をコンパイルする前に、AssemblyReference を CompilerParameters に追加することは可能ですか (そうしないと、アセンブリ コンパイラの欠落エラーが発生します)。

現在、次の 2 つのオプションがあります。

  1. ディスク上に最初のアセンブリを作成し、CompilerParameters.ReferencedAssemblies.Add を使用します (ただし、不要なディスク操作は好きではありません)。
  2. 1枚目は一切生成せず、2枚目にコードを貼り付ける(ただし、同じコードを何度も貼り付けるのは苦手)

私の質問:別のランタイム生成アセンブリでランタイム生成アセンブリを参照するメモリ内の方法はありますか?

4

1 に答える 1

1

CSharpCodeProviderとにかくディスク上で動作します-アセンブリを「メモリ内」でのみ生成する場合でも、アセンブリをディスク上でコンパイルしてメモリにロードします(そうする必要があります-呼び出しだけですcsc.exe)。唯一の違いは、アセンブリ ファイルが、指定したファイルではなく、一時的な DLL であることです。

C# コードの真のインメモリ コンパイルが必要な場合は、Roslyn コンパイラを使用します。

于 2016-10-11T15:50:31.907 に答える