Vérifier les sous-types d’un projet au moment de l’exécution
Un VSPackage qui dépend d’un sous-type de projet personnalisé doit inclure une logique pour rechercher ce sous-type afin qu’il puisse échouer correctement si le sous-type n’est pas présent. La procédure suivante montre comment vérifier la présence d’un sous-type spécifié.
Pour vérifier la présence d’un sous-type
Obtenez la hiérarchie de projet à partir des objets de projet et de solution en tant qu’objet IVsHierarchy en ajoutant le code suivant à votre 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);
Cassez la hiérarchie vers l’interface IVsAggregatableProjectCorrected .
IVsAggregatableProjectCorrected AP; AP = hierarchy as IVsAggregatableProjectCorrected;
Obtenez la liste des GUID de type de projet en appelant le GetAggregateProjectTypeGuids.
string projTypeGuids = AP.GetAggregateProjectTypeGuids().ToUpper();
Vérifiez la liste du GUID du sous-type spécifié.
// Replace the string "MyGUID" with the GUID of the subtype. string guidMySubtype = "MyGUID"; if (projTypeGuids.IndexOf(guidMySubtype) > 0) { // The specified subtype is present. }