ProjectMainに Project への参照があるとしますRef。ではMain、 を定義し、CSharpCodeProviderそれを使用して実行時にコードをコンパイルします。
var provider = new CSharpCodeProvider(new Dictionary<string, string> { { "CompilerVersion", "v4.0" } });
var parameters = new CompilerParameters();
parameters.ReferencedAssemblies.Add("System.dll");
// Rest of the referenced assemblies.
実行時にコンパイルされるコードをRef正しく実行するには、新しいバージョンの Project が必要になる場合があります。Ref.Dllそこで、相対サブフォルダー ( plugins) に新しいものを追加しようとしました。
parameters.ReferencedAssemblies.Add(@"d:\project-output-path\plugins\Ref.dll");
また、以下を追加しました。
AppDomain.CurrentDomain.AppendPrivatePath("plugins");
問題は、スクリプトを動的にコンパイルしようとするとRef.dll、メイン フォルダーの が使用され、エラーが発生することです。
Refそれで、私のスクリプトだけのために新しいプロジェクトを参照する最良の方法は何でしょうか?
PS動的に実行されるコードは現在のAppDomainにロードされたコードと結合され、分離できないため、別のAppDomainを作成する必要がないことを本当に望んでいます。