public static void RenameSolution()

in EnvDTE.Host/Callback/Util/SolutionExtensions.cs [55:80]


    public static void RenameSolution([NotNull] this ISolution solution, [CanBeNull] string newName)
    {
        if (string.IsNullOrWhiteSpace(newName) || newName.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0)
            throw new ArgumentException("Solution name contains invalid characters.");

        newName += solution.SolutionFilePath.ExtensionWithDot;
        try
        {
            var newPath = solution.SolutionFilePath.Directory.Combine(newName);
            solution.SolutionFilePath.Move(newPath);
        }
        catch (Exception e)
        {
            Logger.LogException($"Failed to rename solution file to {newName}", e);
            throw new IOException("Failed to rename the solution file.");
        }

        solution.InvokeUnderTransaction(_ =>
        {
            if (solution.GetSolutionMark() is SolutionMark solutionMark) solutionMark.RenameSolution(newName);

            ((SolutionElement)solution).RenameSolutionFile(new SolutionLocation(
                solution.SolutionDirectory, solution.SolutionDirectory.Combine(newName)
            ));
        });
    }