다음을 통해 공유


런타임에 프로젝트의 하위 형식 확인

사용자 지정 프로젝트 하위 형식에 의존하는 VSPackage에는 하위 형식이 없는 경우 정상적으로 실패할 수 있도록 해당 하위 형식을 찾는 논리가 포함되어야 합니다. 다음 절차에서는 지정된 하위 형식의 존재를 확인하는 방법을 보여 줍니다.

하위 형식의 존재를 확인하려면 다음을 수행합니다.

  1. VSPackage에 다음 코드를 추가하여 프로젝트 계층 구조를 프로젝트 및 솔루션 개체에서 IVsHierarchy 개체로 가져옵니다.

    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. GetAggregateProjectTypeGuids를 호출하여 프로젝트 형식 GUID 목록을 가져옵니다.

    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.
    }