Проверка подтипов проекта во время выполнения
VSPackage, зависящий от настраиваемого подтипа проекта, должен включать логику для поиска этого подтипа, чтобы он может завершиться ошибкой, если подтип отсутствует. В следующей процедуре показано, как проверить наличие указанного подтипа.
Проверка наличия подтипа
Получите иерархию проектов из объектов проекта и решения в качестве IVsHierarchy объекта, добавив следующий код в 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);
Приведение иерархии к интерфейсу IVsAggregatableProjectCorrected .
IVsAggregatableProjectCorrected AP; AP = hierarchy as IVsAggregatableProjectCorrected;
Получите список идентификаторов GUID типа проекта путем GetAggregateProjectTypeGuidsвызова .
string projTypeGuids = AP.GetAggregateProjectTypeGuids().ToUpper();
Проверьте список guid указанного подтипа.
// Replace the string "MyGUID" with the GUID of the subtype. string guidMySubtype = "MyGUID"; if (projTypeGuids.IndexOf(guidMySubtype) > 0) { // The specified subtype is present. }