root = root.ReplaceNode(lNamespaceDeclarationSyntax.Members[i], newRoot);
File.WriteAllText(tree.FilePath, root.GetText().ToString());
Need replace nodes in root...
Question
I try to use method ReplaceNode
, replacement process is successful, but i can't save changes.
For example part of my code
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);
How i must save changes?
Solution 2
root = root.ReplaceNode(lNamespaceDeclarationSyntax.Members[i], newRoot);
File.WriteAllText(tree.FilePath, root.GetText().ToString());
Need replace nodes in root...
OTHER TIPS
Slightly cleaner than File.WriteAllText, just create a new syntax tree using the updated root node:
root = root.ReplaceNode(oldNode, newNode);
tree = SyntaxTree.Create(root);
root = tree.GetRoot();