public static bool IsCPSProject()

in EnvDTE.Host/Callback/Util/ProjectExtensions.cs [151:185]


    public static bool IsCPSProject([NotNull] this IProject project, Lifetime propertyWriteLifetime) =>
        project.GetOrCreateProperty(propertyWriteLifetime, IsCPSPropertyKey, p =>
            p.IsProjectFromUserView() && !p.IsSolutionFolder() &&
            (p.IsDotNetCoreProject() || (p.IsSharedProject() && !IsCppProject(p)) || p.IsDockerComposeProject()
             || p.IsEcmaScriptProject() || IsFSharpProject(p) || IsServiceFabricProject(p)));

    [PublicAPI]
    private static bool IsFSharpProject([NotNull] this IProject project) =>
        project.ProjectProperties.ProjectTypeGuids.LastOrDefault().ToString().Equals(FSharpProjectTypeGuid);

    [PublicAPI]
    public static bool IsCppProject([NotNull] this IProject project) => project.HasFlavour<CppProjectFlavor>();

    [PublicAPI]
    public static bool IsServiceFabricProject([NotNull] this IProject project) =>
        project.HasFlavour<ServiceFabricProjectFlavor>();

    /// <summary>
    /// Returns the hierarchical path of the project as a list of project model item IDs.
    /// This path is meant to be used with <c>ProjectImplementation.GetFromPath</c> on the client side to retrieve the project.
    /// </summary>
    [PublicAPI]
    public static List<int> GetProjectPath([NotNull] this IProject project, ProjectModelViewHost viewHost) =>
        project.GetPathChain().Select(viewHost.GetIdByItem).Reverse().ToList();

    private static string CalculateProjectUniqueName([NotNull] IProject project)
    {
        if (project.IsMiscFilesProject()) return "<MiscFiles>";
        if (project.IsSolutionFolder()) return $"{project.Name}{project.Guid.ToString("B").ToUpperInvariant()}";

        var solutionDirPath = project.GetSolution().SolutionDirectory;
        var projectFilePath = project.ProjectFileLocation;

        return projectFilePath.MakeRelativeTo(solutionDirPath).FullPath;
    }