実行時におけるプロジェクトのサブタイプの確認
カスタム プロジェクトのサブタイプに依存する VSPackage には、サブタイプが存在しない場合にも正常に失敗するように、そのサブタイプを検索するロジックを含める必要があります。 次の手順は、指定されたサブタイプの有無を確認する方法を示しています。
サブタイプの有無を確認するには
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);
階層を IVsAggregatableProjectCorrected インターフェイスにキャストします。
IVsAggregatableProjectCorrected AP; AP = hierarchy as IVsAggregatableProjectCorrected;
GetAggregateProjectTypeGuids を呼び出して、プロジェクト タイプの GUID の一覧を取得します。
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. }