我使用 .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.
每次我“运行”脚本时都会发生这种情况。所以过了一会儿,有很多程序集加载到进程中,杀死内存。
现在的问题是:
是否可以卸载程序集?