我正在开发一个脚本编辑器,可以提供代码完成和动态编译诊断。我开始使用CSharpScript.Create:
this._script = CSharpScript.Create<T>(sourceCode,ScriptOptions.Default,typeof(T));
diagnostics = this._script.Compile().ToList();
但注意到每次创建脚本时内存消耗都在增加(由源代码修改触发)。然后我看着使用Document:
this.Document = this.Workspace
.AddProject("TestProject", LanguageNames.CSharp)
.WithMetadataReferences(...)
.AddDocument("", "")
.WithSourceCodeKind(SourceCodeKind.Script);
diagnostics=this.Document.WithText(SourceText.From(sourceCode)).GetSemanticModelAsync()
.Result.GetDiagnostics().ToList()
内存消耗仍然很低但我不知道如何使用CSharpScript.Create轻松传递全局变量信息。脚本中对全局变量的任何引用都会触发CS0103错误 - &#34;名称&#39;&#39;在当前上下文中不存在&#34;。
文档是否可以传递全局变量类型信息?
我们如何执行这样的文档/脚本? (目前我正在使用CSharpScript.Create来编译和执行代码,而Workspace / Document则用于提供代码完成)。