2012-03-30 13 views
0

私は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が不足している)ドキュメントより優れた参考資料を知っていますか?誰もこれを前にしてみましたか?これはどうすればいいですか?

ありがとうございます!

+1

- MSDN VSXフォーラムで役立つ情報が見つかりました。また、オープンソースのMPFベースのパッケージ(利用可能な製品がいくつかあります)を探して、彼らがどのように仕掛けをしたかを知ることができます; –

答えて

1

プロジェクトノードでは可能かどうかはわかりません。ファイルノードには、VSHPROPID_IsNonMemberItem階層プロパティがあります。 this threadthis oneもご覧ください。

+0

ダング、私がやろうとしていることをやり遂げることができません。プロジェクト上のファイルノードのフラグを設定すると、あらゆる種類のエラーが発生します。とにかく助けてくれてありがとう! –