src/Microsoft.VisualStudio.ProjectSystem.Managed.VS.Client/SolutionExplorer/ProjectNodeExtender.cs
/// <summary>
/// <para>
/// This is a bit of a hack. There currently isn't a good way to determine if the
/// <paramref name="node"/> represents a project backed by the managed project
/// system. In the interests of getting something working, here we check if the
/// Solution Explorer thinks the node is a project and then check that it has a
/// supported extension.
/// </para>
/// <para>
/// The _right_ way to do this probably involves getting the project GUID from the
/// node and then running that throught the Project API to determine if the project
/// has the appropriate capabilities. At the moment there's no good way to
/// achieve that first step, however.
/// </para>
/// </summary>
This is a bit of a hack. There currently isn't a good way to determine if the
represents a project backed by the managed project
system. In the interests of getting something working, here we check if the
Solution Explorer thinks the node is a project and then check that it has a
supported extension.

The _right_ way to do this probably involves getting the project GUID from the
node and then running that throught the Project API to determine if the project
has the appropriate capabilities. At the moment there's no good way to
achieve that first step, however.
This is a bit of a hack . There currently isn ' t a good way to determine if the represents a project backed by the managed project system . In the interests of getting something working here we check if the Solution Explorer thinks the node is a project and then check that it has a supported extension . The _right_ way to do this probably involves getting the project GUID from the node and then running that throught the Project API to determine if the project has the appropriate capabilities . At the moment there ' s no good way to achieve that first step however .
private static bool NodeRepresentsAManagedProject(WorkspaceVisualNodeBase node)
        {
            return node != null
                && node.VSSelectionMoniker != null
                && node.VSSelectionKind == CloudEnvironment.SolutionViewProjectGuid
                && node.NodeMoniker != null
                && s_supportedProjectExtensions.Any(extension => node.NodeMoniker.EndsWith(extension, StringComparison.OrdinalIgnoreCase));
        }
private static bool NodeRepresentsAManagedProject ( WorkspaceVisualNodeBase node ) { return node != null && node . VSSelectionMoniker != null && node . VSSelectionKind == CloudEnvironment . SolutionViewProjectGuid && node . NodeMoniker != null && s_supportedProjectExtensions . Any ( extension => node . NodeMoniker . EndsWith ( extension , StringComparison . OrdinalIgnoreCase ) ) ; }
This is a bit of a hack.
This is a bit of a hack .
node
WorkspaceVisualNodeBase