3

実行時に C# コードをコンパイルする必要があります。私は次のようなコードを使用しています:

CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters();
parameters.ReferencedAssemblies.Add("MyLibrary.dll");    // File Path on Hard Drive
...

しかし、ファイル アドレスではなく、メモリにロードされたライブラリを使用したいと考えています。出来ますか?

4

1 に答える 1

3

メモリ内でのみ生成されないアセンブリの場合は、次を使用できます。

parameters.ReferencedAssemblies.Add
( typeof(ClassInAssemblyYouWantToAdd).Assembly.Location
);

または:

parameters.ReferencedAssemblies.Add
( Assembly.Load("Full.Qualified.Assembly.Name").Location
);

Locationプロパティには、読み込まれたアセンブリへのパスがあります。

メモリ内の何かだけでなく、アセンブリのハードコピーが必要なため、生成されたアセンブリをそのまま使用することはできません。メモリ内で生成されたアセンブリを使用する必要がある場合は、最初にそれらをディスクに保存できます。

于 2014-09-02T09:49:05.467 に答える