use*_*893 7 c# roslyn visual-studio-2015
我已经从Roslyn Pluralsight教程中复制了这段代码.
string code = "class Foo { }";
var tree = CSharpSyntaxTree.ParseText(code);
var node = tree.GetRoot();
Console.WriteLine(node.ToString());
var ret = SyntaxFactory.ClassDeclaration("Foo").
WithMembers(SyntaxFactory.List<MemberDeclarationSyntax>(new[] {
SyntaxFactory.MethodDeclaration(SyntaxFactory.
PredefinedType(SyntaxFactory.Token(SyntaxKind.VoidKeyword)),
"Bar"
).WithBody(SyntaxFactory.Block()
)
})).NormalizeWhitespace();
Console.WriteLine(ret.ToString());`
Run Code Online (Sandbox Code Playgroud)
在调试模式下,我看到变量"node"和"ret"默默地抛出此错误:
"类型'对象'是在未引用的程序集中定义的.您必须添加对程序集'System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"的引用.
在Roslyn Plurarsight视频教程"使用API创建语法树"中没有问题.
如何附加对CSharpSyntaxTree类的引用.
编辑:
我正在使用Visual Studio 2015 Preview.

在Pluralsight视频中,这个简单的代码没有错误

编辑:
问题仅出在Visual Studio工具提示中.我可以毫无问题地使用Syntax Tree API.例如,此代码在没有任何奇怪异常的情况下编写节点和标记,但Visual Studio在调试代码时不会在工具提示中显示语法树.
static void PrintSyntaxTree(SyntaxNode node)
{
if (node != null)
{
foreach (var item in node.ChildTokens())
{
Console.Write(item);
}
Console.WriteLine("");
foreach (SyntaxNode child in node.ChildNodes())
PrintSyntaxTree(child);
}
}
static void Main(string[] args)
{
string code = "class Foo { public void Bar(){} }";
var tree = CSharpSyntaxTree.ParseText(code);
var node = tree.GetRoot();
foreach (SyntaxNode child in node.ChildNodes())
{
PrintSyntaxTree(child);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1798 次 |
| 最近记录: |