私は Visual Studio 2010 の拡張機能に取り組んでおりUIHierarchy
、基になるソリューションからプロジェクトを削除せずに、ソリューション エクスプローラー ( ) でプロジェクトを非表示にする方法を見つけようとしています。私は探していて、いくつかの手がかりを見つけましたが、すべてをまとめるのに十分な知識がありません.
私が収集できたことからUIHierarchy
、アイテムが表示されていない限り (つまり、ツリーが展開されていない限り)、Visual Studio はインスタンスを作成することさえしないので、アイテムを削除したい場合は、インスタンスを作成する必要があると考えました。ツリーからインスタンスを簡単に削除できます。
私の最初の質問は、私の仮定は正しいですか?
答えが「はい」であると仮定すると、次のコードが得られます (この投稿用に簡略化されています)。
private void HideProject(IVsHierarchy project)
{
((IVsUIHierarchyWindow2)_uiHierarchyWindow).RemoveUIHierarchy(GetUIHierarchyFromHierarchy(project));
}
private IVsUIHierarchy GetUIHierarchyFromHierarchy(IVsHierarchy project)
{
UIHierarchy solutionExplorer = ((DTE2)_dte).ToolWindows.SolutionExplorer;
foreach (UIHierarchyItem hierarchy in solutionExplorer.UIHierarchyItems.Item(1).UIHierarchyItems)
{
// What do I do here?
}
return null;
}
私は完全に立ち往生しているので、明らかに、これはまだ何もしません。コードは (フォルダーに含まれるプロジェクトを処理するためなどに) 再帰的になる必要があると思いますが、今のところ、すべてのプロジェクトがソリューションの直下に含まれているという単純なケースだけが心配です。
Microsoft の (IMHO 不足の) ドキュメントよりも優れた参考資料を知っている人はいますか? 誰もこれをやろうとしたことがありますか?どうすればいいですか?
ありがとう!