我正在使用 Roslyn 来从另一个树生成一棵树。所以我们正在处理 AST 转换。我正在使用 SyntaxFactory
来生成节点。
在特定情况下,我想创建一个 u using
指令,它应该如下所示:
using MyNamespace.SubNamespace;
所以我这样做:
var usingDirective = SyntaxFactory.UsingDirective(SyntaxFactory.ParseName("MyNamespace.SubNamespace"));
var newNode = mynode.AddUsings(new[] { usingDirective });
但是,如果我检查生成的最终树
newNode
(通过简单调用 newNode.ToString()
生成的字符串源代码),我看到我的指令已添加如下:usingMyNamespace.SubNamespace;
如果我只是这样做,我可以看到同样的事情:
usingDirective.ToString()
。看起来很错误,需要一个空格,这应该会触发语法错误。到底是怎么回事? 最佳答案
添加此以解决问题:
SyntaxFactory.UsingDirective(
SyntaxFactory.ParseName("MyNamespace.SubNamespace")).NormalizeWhitespace();
关于c# - 在 Rosslyn 从工厂创建 Using 指令时生成错误的语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40832090/