使用Roslyn处理C#脚本时的编译错误

时间:2012-11-28 09:07:29

标签: c# roslyn

我使用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);

谢谢

1 个答案:

答案 0 :(得分:7)

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

SyntaxTree tree = SyntaxTree.ParseText(source, options: new ParseOptions(kind: SourceCodeKind.Script));