Verificar subtipos de um projeto em tempo de execução

Um VSPackage que depende de um subtipo de projeto personalizado deve incluir lógica para procurar esse subtipo para que ele possa falhar normalmente se o subtipo não estiver presente. O procedimento a seguir mostra como verificar a presença de um subtipo especificado.

Para verificar a presença de um subtipo

  1. Obtenha a hierarquia do projeto dos objetos de projeto e solução como um IVsHierarchy objeto adicionando o código a seguir ao seu VSPackage.

    EnvDTE.DTE dte;
    dte = (EnvDTE.DTE)Package.GetGlobalService(typeof(EnvDTE.DTE));
    
    EnvDTE.Project project;
    project = dte.Solution.Projects.Item(1);
    
    IVsSolution solution;
    solution = (IVsSolution)Package.GetGlobalService(typeof(SVsSolution));
    
    IVsHierarchy hierarchy;
    hierarchy = solution.GetProjectOfUniqueName(project.UniqueName);
    
    
  2. Converta IVsAggregatableProjectCorrected a hierarquia na interface.

    IVsAggregatableProjectCorrected AP;
    AP = hierarchy as IVsAggregatableProjectCorrected;
    
    
  3. Obtenha a lista de GUIDs de tipo de projeto invocando o GetAggregateProjectTypeGuids.

    string projTypeGuids = AP.GetAggregateProjectTypeGuids().ToUpper();
    
    
  4. Verifique a lista para o GUID do subtipo especificado.

    // Replace the string "MyGUID" with the GUID of the subtype.
    string guidMySubtype = "MyGUID";
    if (projTypeGuids.IndexOf(guidMySubtype) > 0)
    {
        // The specified subtype is present.
    }