无法有效地将 class 添加到 Roslyn 中的命名空间

Cannot effectively add class to namespace in Roslyn

我正在使用 Roslyn 2.0 和 SyntaxFactory 生成 SyntaxTree:

var namespaceNode = SyntaxFactory.NamespaceDeclaration(
    SyntaxFactory.ParseName("Root.MyNamespace1"));
var classNode = SyntaxFactory.ClassDeclaration("MyClass");

namespaceNode.AddMembers(classNode);

缺少成员

似乎一切正常,但是当我通过调用 namespaceNode.ToString() 检查调试器对象 namespaceNode 时,我得到:

namespaceRoot.MyNamespace1{}

每次我在 SyntaxNode 上使用 ToString 它通常会发出打印代码,所以我很确定这里的问题是命名空间是空的。 class 不存在,即使我调用了 AddMembers.

命名空间中没有成员!我做错了什么?

当我写这篇文章时:

namespaceNode.AddMembers(classNode);

我在我的 Visual Studio 2017 社区中收到一条警告,解释了正在发生的事情:

RS1014 'NamespaceDeclarationSyntax' is immutable and 'AddMembers' will not have any effect on it. Consider using the return value from 'AddMembers'.

所以你必须

namespaceNode = namespaceNode.AddMembers(classNode);