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)
));
});
}