public static string ProjectFile(string xml, string fileName) { var original = XDocument.Parse(xml.Replace("xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"", string.Empty)); var root = new XElement(XName.Get("Project")); var isWpf = IsWpf(original); root.SetAttributeValue(XName.Get("Sdk"), isWpf ? "Microsoft.NET.Sdk.WindowsDesktop" : "Microsoft.NET.Sdk"); foreach (var element in original.Root.Elements()) { var localName = element.Name.LocalName; switch (localName) { case "PropertyGroup": { if (PropertyGroup.TryMigrate(element, fileName, isWpf, out var migratedElement)) { if (migratedElement != null) { root.Add(migratedElement); } } continue; } case "ItemGroup": { if (ItemGroup.TryMigrate(element, isWpf, out var migratedElement)) { if (migratedElement != null) { root.Add(migratedElement); } } continue; } case "Choose": continue; case "Import": { if (element.Attribute(XName.Get("Project")) is { } pa) { switch (pa.Value) { case "$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props": case "$(MSBuildToolsPath)\\Microsoft.CSharp.targets": case "$(VSToolsPath)\\TeamTest\\Microsoft.TestTools.targets": continue; } } break; } } root.Add(element); } return(new XDocument(root).ToString());