.NET 統合コンパイラを使用してスクリプト ツールを作成しました。
すぐに、実行時にソース ファイルをアセンブリにコンパイルし、アセンブリで定義されたオブジェクトを作成し、オブジェクトのメソッドを開始します。
コードは次のとおりです(大幅に簡略化されています):
CodeDomProvider provider = new CSharpCodeProvider();
CompilerParameters cp = new CompilerParameters();
cp.GenerateExecutable = false;
cp.GenerateInMemory = true;
// ...
CompilerResults res = provider.CompileAssemblyFromSource(cp, source);
// ...
return res.CompiledAssembly;
これは、ツールの実行中に複数回発生する可能性があります。
これまでのところ、うまく機能しています。
問題:
コンパイルされたアセンブリがプロセスに読み込まれ、デバッガーから次のように通知されます。
'ScriptTool.exe' (Managed): Loaded 'v7wyfy7w', No symbols loaded.
これは、スクリプトを「実行」するたびに発生します。そのため、しばらくすると、大量のアセンブリがプロセスに読み込まれ、メモリが不足します。
問題は、アセンブリ
をアンロードできるかどうかです。