Поделиться через


Проверка подтипов проекта во время выполнения

VSPackage, зависящий от настраиваемого подтипа проекта, должен включать логику для поиска этого подтипа, чтобы он может завершиться ошибкой, если подтип отсутствует. В следующей процедуре показано, как проверить наличие указанного подтипа.

Проверка наличия подтипа

  1. Получите иерархию проектов из объектов проекта и решения в качестве 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);
    
    
  2. Приведение иерархии к интерфейсу IVsAggregatableProjectCorrected .

    IVsAggregatableProjectCorrected AP;
    AP = hierarchy as IVsAggregatableProjectCorrected;
    
    
  3. Получите список идентификаторов GUID типа проекта путем GetAggregateProjectTypeGuidsвызова .

    string projTypeGuids = AP.GetAggregateProjectTypeGuids().ToUpper();
    
    
  4. Проверьте список guid указанного подтипа.

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