Comprobación de subtipos de un proyecto en tiempo de ejecución

Un VSPackage que depende de un subtipo de proyecto personalizado debe incluir lógica para buscar ese subtipo para que pueda producir un error correctamente si el subtipo no está presente. En el procedimiento siguiente se muestra cómo comprobar la presencia de un subtipo especificado.

Para comprobar la presencia de un subtipo

  1. Obtenga la jerarquía del proyecto y de los objetos de solución como un IVsHierarchy objeto agregando el código siguiente a 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. Convierta la jerarquía en la IVsAggregatableProjectCorrected interfaz.

    IVsAggregatableProjectCorrected AP;
    AP = hierarchy as IVsAggregatableProjectCorrected;
    
    
  3. Obtenga la lista de GUID de tipo proyecto invocando .GetAggregateProjectTypeGuids

    string projTypeGuids = AP.GetAggregateProjectTypeGuids().ToUpper();
    
    
  4. Compruebe la lista del GUID del 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.
    }