いくつかの C# コード (「スクリプト」と呼びましょう) があり、実行時にコンパイルしています。その関数にアクセスするために使用するメイン プログラムのインターフェイスを使用します。コンパイルが完了したらCompilerResults.CompiledAssembly
、その場合はできCreateInstance(Type)
ます。
スクリプトの使用が完了したら、完全にアンロードしたいと思います。私が理解していることから、別のアプリ ドメインを作成する場合にのみこれを行うことができます: 別の AppDomain への DLL の読み込み
私の実装に固有の質問がいくつかありました。
- コンパイルするスクリプトが複数あり、それらを個別にアンロードしたい場合、それぞれに個別のアプリ ドメインを作成する必要がありますか?
- どのアプリ ドメイン名を使用すればよいですか? GUID は良い考えでしょうか? 競合する可能性のある避けるべき名前はありますか?
- アセンブリが別のアプリ ドメインにある場合、メイン プログラムのインターフェイスへのアクセスに問題はありますか? 私は現在、
ReferencedAssemblies.Add(typeof(Interface).Assembly.Location)
コンパイルする前にやっています。 - を使用できますか
CompilerParameters GenerateInMemory=true
、それともどこかに保存する必要がありますか?