1

こんにちは、特定の種類のファイルを右クリックすると、ソリューション エクスプローラーにコンテキスト メニューを作成するビジュアル スタジオ パッケージを作成しています。メニューは機能していますが、ファイル名ではなくフル パスを取得する必要があります。これは、コンテキスト メニューでオプションを選択すると、フル パスをパラメーターとして受け取るコマンドライン プログラムが開くためです。

現在、次のようになっています。

    foreach (var ItemSelected in vsItemSelections)
                    {
                        object value;
                        hierarchy.GetProperty(ItemSelected.itemid, (int) __VSHPROPID.VSHPROPID_Name, out value);
                        if (value != null && value.ToString().EndsWith(".rst"))
                        {
                            cmd.Visible = true;
                        }
                        else
                        {
                            cmd.Visible = false;
                            break;
                        }
                    }

したがって、.rst ファイルが選択されている場合は、コンテキスト メニューにコマンドを表示できますが、明らかにフル パスが必要です。考えられることはすべて試しましたが、これは私にとってまったく新しい分野です。

ENVDTE80.DTE アプリケーション オブジェクトを使用して既に動作するソリューションがありますが、実行すると非常に扱いにくいように見えます。

4

1 に答える 1

1

最終的には階層のタイプに依存します (すべての項目が「フル パス」の概念をサポートしているわけではありません) が、ほとんどの階層では、このメソッドは必要なものを取得する必要があります。

IVsHierarchy.GetCanonicalName(uint itemid, out string pbstrName);
于 2013-11-06T17:01:31.163 に答える