脚本上的 Roslyn 错误:字符串代码 = @"System.Threading.Thread.Sleep(300000);";

Roslyn error on script: string code = @"System.Threading.Thread.Sleep(300000);";

以下脚本:

string code = @"System.Threading.Thread.Sleep(300000);";

给我错误:

(1,31): error CS1022: Type or namespace definition, or end-of-file expected
(1,31): error CS1026: ) expected

验证代码:

public IEnumerable<Diagnostic> GetCodeErrorsAndWarnings()
{
    var tree = CSharpSyntaxTree.ParseText(Code);
    var diags = tree.GetDiagnostics().Where(d=>d.Severity == DiagnosticSeverity.Error || d.Severity == DiagnosticSeverity.Warning);
    if (diags.Any())
    {
        foreach (Diagnostic diag in diags)
        {
            Debug.WriteLine(diag.ToString());
        }
        return diags;
    }

    return null;
}

canton7 有正确的答案,但他没有写...

问题是我没有使用脚本引擎,而不是期待一个简单的脚本,Roslyn 期待至少一个 class。我用 class 包装了我的函数,并且编译的所有内容都没有错误。