C# 使用Rosyln CSharpScript.Create()而不将DLL加载到AppDomain

C# 使用Rosyln CSharpScript.Create()而不将DLL加载到AppDomain,c#,.net,roslyn,C#,.net,Roslyn,目前,我执行一个C#脚本,如下所示: using Microsoft.CodeAnalysis.CSharp.Scripting; using Microsoft.CodeAnalysis.Scripting; // ... void RunScript(string myFile) { string code = File.ReadAllText(myFile); var script = CSharpScript.Create(code, globalsType: typ

目前,我执行一个C#脚本,如下所示:

using Microsoft.CodeAnalysis.CSharp.Scripting;
using Microsoft.CodeAnalysis.Scripting;

// ...

void RunScript(string myFile)
{
    string code = File.ReadAllText(myFile);
    var script = CSharpScript.Create(code, globalsType: typeof(MyContext));
    var scriptFunction = script.CreateDelegate();
    scriptFunction(myContextInstance).Wait();
}
但是,每次编译并运行脚本时,都会将一个新的DLL加载到AppDomain中

AppDomain.CurrentDomain.GetAssemblies()
例如:

R*c906e0cf-ab67-4bed-819a-44600a796455#1-0, Version=0.0.0.0
R*c906e0cf-ab67-4bed-819a-44600a796455#2-0, Version=0.0.0.0
R*c906e0cf-ab67-4bed-819a-44600a796455#3-0, Version=0.0.0.0
这意味着在运行大量脚本时,可能会遇到内存问题。这是真的吗?有没有办法阻止Roslyn发出DLL

我知道您无法从AppDomain卸载程序集

AppDomain.CurrentDomain.GetAssemblies()

编辑:

为什么不创建一个新的AppDomain,然后在脚本完成后将其处理?您每次都在运行不同的脚本(也就是说,
myFile
每次都不同)?脚本文件在应用程序运行时确实会更改,但不会经常更改。无论如何,在对10个不同的脚本进行10次更改后(并且仅在文件更改时进行编译),内存中将有90个未使用的DLL。这里也有同样的问题。核心上不支持AppDomain