以下脚本:
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 期望至少有一个类,而不是一个简单的脚本。我用一个类包装了我的函数,并且编译了所有内容而没有错误。