私はVisual Studio 2010の拡張機能に取り組んでおり、ソリューションエクスプローラ(UIHierarchy
)でプロジェクトを非表示にする方法を解明しようとしています。私は検索しており、いくつかの手がかりを見つけましたが、私はそれをすべてまとめるだけでは十分ではありません。ソリューションエクスプローラでプロジェクトをプログラムで非表示にする方法はありますか?
Visual Studioでは、アイテムが表示されていない限り(つまり、ツリーが展開されていない)UIHierarchy
インスタンスを作成しないため、アイテムが必要な場合私は単純にツリーからインスタンスを削除することができます。
私の最初の質問は、私の仮定は正しいですか?
答えを想定するとはい、私は(この記事のために簡略化)次のコードを持っている:私は完全に立ち往生していますので、
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が不足している)ドキュメントより優れた参考資料を知っていますか?誰もこれを前にしてみましたか?これはどうすればいいですか?
ありがとうございます!
- MSDN VSXフォーラムで役立つ情報が見つかりました。また、オープンソースのMPFベースのパッケージ(利用可能な製品がいくつかあります)を探して、彼らがどのように仕掛けをしたかを知ることができます; –