Ověření podtypů projektu za běhu

Balíček VSPackage, který závisí na vlastním podtypu projektu, by měl obsahovat logiku pro vyhledání tohoto podtypu, aby mohl řádně selhat, pokud podtyp neexistuje. Následující postup ukazuje, jak ověřit přítomnost zadaného podtypu.

Ověření přítomnosti podtypu

  1. Získejte hierarchii projektu z objektů projektu a řešení jako IVsHierarchy objekt přidáním následujícího kódu do balíčku 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. Přetypujte hierarchii do IVsAggregatableProjectCorrected rozhraní.

    IVsAggregatableProjectCorrected AP;
    AP = hierarchy as IVsAggregatableProjectCorrected;
    
    
  3. Seznam identifikátorů GUID typu projektu získáte vyvoláním příkazu GetAggregateProjectTypeGuids.

    string projTypeGuids = AP.GetAggregateProjectTypeGuids().ToUpper();
    
    
  4. Zkontrolujte seznam identifikátoru GUID zadaného podtypu.

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