internal void ConvertSolutionEntries(string solutionFilePath) { var oldLines = File.ReadAllLines(solutionFilePath); var newLines = new List <string>(); foreach (var line in oldLines) { if (SolutionUtil.IsProjectLine(line)) { var entry = SolutionUtil.ParseProjectLine(line); if (ProjectNameMap.TryGetValue(entry.Name, out var newName)) { var newEntry = new ProjectEntry(ChangeFileName(entry.RelativeFilePath, newName), newName, entry.Guid, entry.TypeGuid); newLines.Add(SolutionUtil.CreateProjectLine(newEntry)); } else { newLines.Add(line); } } else { newLines.Add(line); } } File.WriteAllLines(solutionFilePath, newLines); }
private void ConvertProjectReferences(ProjectUtil util) { foreach (var refElement in util.MSBuildDocument.XPathSelectElements("ProjectReference")) { var includeAttr = refElement.Attribute("Include"); var include = includeAttr.Value; var name = Path.GetFileNameWithoutExtension(include); if (ProjectNameMap.TryGetValue(name, out var newName)) { includeAttr.SetValue(ChangeFileName(include, newName)); } } }
internal void ConvertProjectFile(string projectFilePath) { var comparer = StringComparer.OrdinalIgnoreCase; var util = new ProjectUtil(projectFilePath); ConvertProjectReferences(util); ConvertInternalsVisibleTo(util); var saveName = util.FilePath; if (ProjectNameMap.TryGetValue(util.ProjectName, out var newProjectName)) { var assemblyName = util.AssemblyNameWithoutExtension; if (!AssemblyNameMap.TryGetValue(assemblyName, out var newAssemblyName)) { newAssemblyName = assemblyName; } var assemblyNameElem = util.MSBuildDocument.XPathSelectElement("AssemblyName"); if (comparer.Equals(newAssemblyName, newProjectName)) { assemblyNameElem?.Remove(); } else { if (assemblyNameElem == null) { assemblyNameElem = new XElement(util.MSBuildDocument.Namespace.GetName("AssemblyName")); util.GetOrCreateMainPropertyGroup().AddFirst(assemblyNameElem); } assemblyNameElem.Value = newAssemblyName; } if (!StringComparer.OrdinalIgnoreCase.Equals(util.ProjectName, newProjectName)) { File.Delete(util.FilePath); saveName = ChangeFileName(util.FilePath, newProjectName); } } util.Document.Save(saveName); }
internal bool TryGetChangedProjectName(string oldProjectName, out string newProjectName) => ProjectNameMap.TryGetValue(oldProjectName, out newProjectName) && !StringComparer.OrdinalIgnoreCase.Equals(oldProjectName, newProjectName);