在 Rosslyn 中从工厂创建 Using Directive 时生成不正确的语法

Incorrect syntax is generated when creating a UsingDirective from factory in Roslyn

我正在使用 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()。这似乎是非常错误的,需要 space 并且应该触发语法错误。怎么回事?

添加此内容以解决问题:

SyntaxFactory.UsingDirective(
    SyntaxFactory.ParseName("MyNamespace.SubNamespace")).NormalizeWhitespace();