2016-10-11 28 views
0

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

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

現在、私は2つのオプションを参照してください。で、第一の部分を生成しません

  • ディスク上の第一のアセンブリを作成し、CompilerParameters.ReferencedAssemblies.Addを使用します(しかし、私は不必要なディスク操作を好きではない)

    1. をすべてしかし
    (しかし、私は同じコードを何度も貼り付けることが好きではありません)2個目に

    をコードを貼り付けだから私の質問は:実行時生成されたアセンブリを参照するために、メモリ内の方法があります生成された別の実行時にアセンブリ?とにかく、ディスク上の

  • +0

    おそらく関連性があります:http://stackoverflow.com/questions/2830160/c-sharp-referencing-a-type-in​​-a-dynamically-generated-assembly – YSharp

    答えて

    1

    CSharpCodeProvider作品 - あなただけの「インメモリ」アセンブリを生成しても、それはディスクとメモリにロードし、それを上のアセンブリをコンパイルする(これは一種のに持っている - それがないすべてのコールcsc.exeされます)。唯一の違いは、アセンブリファイルが、指定したファイルではなく、一時的なDLLであることです。

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

    +0

    答えとして受け入れられ、ディスク上のDLL作成に関するヒント、それはたくさん説明します。 Roslynコンパイラのヒント – anhoppe

    関連する問題