4

我正在使用 Roslyn 将 C# 脚本引擎嵌入到我的应用程序中,到目前为止,我可以毫无问题地执行代码。例如,我可以执行以下代码:

using System;
var str = "Hello Roslyn";
Console.WriteLine(str);

在上面的代码片段中构建我的语法树时,我遇到了编译问题。编译器抱怨直接嵌入到主命名空间中的语句,这在编写普通的 C# 程序时是有意义的,但在我的情况下却不是,因为我正在使用脚本方式。

问题: 有没有办法从 C# 脚本中构建无错误的语法树?

编辑 这是我用来构建语法树的代码。

SyntaxTree tree = SyntaxTree.ParseText(context.SourceCode);
Compilation compilation = Compilation.Create("CSharp", syntaxTrees: new[] {tree}, references: references);

谢谢

4

1 回答 1

7

您需要指定您正在解析脚本代码而不是常规代码:

SyntaxTree tree = SyntaxTree.ParseText(source, options: new ParseOptions(kind: SourceCodeKind.Script));
于 2012-11-28T16:56:54.900 回答