int IVsSolutionEvents4.OnAfterRenameProject(IVsHierarchy pHierarchy)
        {
            if (!ProjectArguments.IsSupportedProject(pHierarchy))
            {
                return(LogIgnoringUnsupportedProjectType());
            }

            Guid projectGuid    = pHierarchy.GetGuid();
            var  oldProjectDir  = ProjectStateMap[projectGuid].ProjectDir;
            var  oldProjectName = ProjectStateMap[projectGuid].ProjectName;

            ProjectStateMap[projectGuid].ProjectDir  = pHierarchy.GetProjectDir();
            ProjectStateMap[projectGuid].ProjectName = pHierarchy.GetName();

            ProjectAfterRename?.Invoke(this, new ProjectAfterRenameEventArgs {
                OldProjectDir = oldProjectDir, OldProjectName = oldProjectName, Project = pHierarchy
            });

            return(S_OK);
        }
        int IVsSolutionEvents4.OnAfterRenameProject(IVsHierarchy pHierarchy)
        {
            var project = ProjectForHierarchy(pHierarchy);

            if (!ProjectArguments.IsSupportedProject(project))
            {
                return(LogIgnoringUnsupportedProjectType());
            }

            Guid projectGuid    = pHierarchy.GetGuid();
            var  oldFilePath    = ProjectStateMap[projectGuid].FilePath;
            var  oldProjectName = ProjectStateMap[projectGuid].UniqueName;

            ProjectStateMap[projectGuid].FilePath   = project.FullName;
            ProjectStateMap[projectGuid].UniqueName = project.UniqueName;

            ProjectAfterRename?.Invoke(this, new ProjectAfterRenameEventArgs {
                OldFilePath = oldFilePath, OldUniqueName = oldProjectName, Project = project
            });

            return(S_OK);
        }