Искам да приложа промени в няколко документа на решение, но само първата промяна се отразява, а останалите се отхвърлят.Тази връзка показва как само веднъж могат да бъдат приложени промени към решение. Какво би било заобикаляне на това. Ще се радвам на връзка, насочваща към решение или кодов фрагмент.
Ето моята функция:
public static async Task<bool> AddMethod(string solutionPath)
{
var workspace = MSBuildWorkspace.Create();
var solution = await workspace.OpenSolutionAsync(solutionPath);
ClassDeclarationSyntax cls = SyntaxFactory.ClassDeclaration("someclass");
foreach (var project in solution.Projects)
{
foreach(var document in project.Documents)
{
Document doc = project.GetDocument(document.Id);
var root = await doc.GetSyntaxRootAsync();
var classes = root.DescendantNodes().Where(n => n.IsKind(SyntaxKind.ClassDeclaration));
if (classes.Count() != 0)
{
SyntaxNode FirstClass = classes.First() as ClassDeclarationSyntax;
if (FirstClass != null)
{
var newRoot = root.ReplaceNode(FirstClass, cls);
doc = doc.WithText(newRoot.GetText());
Project proj = doc.Project;
var abc = workspace.TryApplyChanges(proj.Solution);
}
}
}
}
return true;
}