アクティブなビルド構成でビルドするように設定されているかどうかに基づいて、ソリューション内のプロジェクトに作用する小さな Visual Studio 拡張機能に取り組んでいます。私が抱えている問題は、それらのプロジェクトが何であるかを判断する方法がわからないことです。
私は を実装IVsUpdateSolutionEvents
しましたOnActiveProjectCfgChange
。構成を変更するときに Visual Studio にコード ブロックを入力させることができ、やりたいことの多くを実行させることができましたが、どのプロジェクトをアクティブにビルドする必要があるかを判断できませんでした。構成、私は水の中で死んでいます。
これまでの私の実装は次のとおりです。
public int OnActiveProjectCfgChange(IVsHierarchy pIVsHierarchy)
{
var activeProjects = new HashSet<string>(); // TODO: Get projects in active configuration
foreach (Project project in _dte.Solution.Projects)
{
if (project.Kind != "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" // C#
&& project.Kind != "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}" // VB
&& project.Kind != "{13B7A3EE-4614-11D3-9BC7-00C04F79DE25}" // VSA
)
continue;
IVsHierarchy projectHierarchy;
_solutionService.GetProjectOfUniqueName(project.UniqueName, out projectHierarchy);
if (activeProjects.Contains(project.UniqueName))
{
// Project is to be built
}
else
{
// Project is not to be built
}
return VSConstants.S_OK;
}
}
私がする必要があるHashSet
のは、関数の最初に を埋める方法を理解することです。( でマークTODO
)。私は検索して検索しましたが、必要なものが見つかりませんでした。
私が前進するのに役立つ可能性のあるドキュメントまたはサンプルコードへの参照はありますか?