我尝试使用方法ReplaceNode
,替换过程成功,但我无法保存更改
例如我的代码的一部分
SyntaxTree tree = SyntaxTree.ParseFile(Path)
CompilationUnitSyntax root = tree.GetRoot();
MemberDeclarationSyntax firstMember = root.Members[0];
NamespaceDeclarationSyntax NamespaceDeclaration = (NamespaceDeclarationSyntax)firstMember;
NamespaceDeclaration = NamespaceDeclaration.ReplaceNode((ClassDeclarationSyntax)NamespaceDeclaration.Members[i], lNewClassDeclarationSyntax);
我必须如何保存更改?
答案 0 :(得分:2)
比File.WriteAllText稍微清晰一点,只需使用更新的根节点创建一个新的语法树:
root = root.ReplaceNode(oldNode, newNode);
tree = SyntaxTree.Create(root);
root = tree.GetRoot();
答案 1 :(得分:1)
root = root.ReplaceNode(lNamespaceDeclarationSyntax.Members[i], newRoot);
File.WriteAllText(tree.FilePath, root.GetText().ToString());
需要替换root中的节点...