示例#1
0
        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);
        }
示例#2
0
 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));
         }
     }
 }
示例#3
0
        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);
        }
示例#4
0
 internal bool TryGetChangedProjectName(string oldProjectName, out string newProjectName) =>
 ProjectNameMap.TryGetValue(oldProjectName, out newProjectName) &&
 !StringComparer.OrdinalIgnoreCase.Equals(oldProjectName, newProjectName);