Überprüfen von Untertypen eines Projekts zur Laufzeit

Ein VSPackage, das von einem benutzerdefinierten Projektuntertyp abhängt, sollte Logik enthalten, um nach diesem Untertyp zu suchen, damit er ordnungsgemäß fehlschlagen kann, wenn der Untertyp nicht vorhanden ist. Das folgende Verfahren zeigt, wie Sie das Vorhandensein eines angegebenen Untertyps überprüfen.

So überprüfen Sie das Vorhandensein eines Untertyps

  1. Rufen Sie die Projekthierarchie aus den Projekt- und Lösungsobjekten als IVsHierarchy Objekt ab, indem Sie ihrem VSPackage den folgenden Code hinzufügen.

    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. Wandeln Sie die Hierarchie in die IVsAggregatableProjectCorrected Schnittstelle um.

    IVsAggregatableProjectCorrected AP;
    AP = hierarchy as IVsAggregatableProjectCorrected;
    
    
  3. Rufen Sie die Liste der Projekttyp-GUIDs ab, indem Sie die GetAggregateProjectTypeGuids.

    string projTypeGuids = AP.GetAggregateProjectTypeGuids().ToUpper();
    
    
  4. Überprüfen Sie die Liste auf die GUID des angegebenen Untertyps.

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