获取通过IVsHierachy选择的项目的完整路径

时间:2013-11-06 16:11:25

标签: c# visual-studio-2010 vspackage

您好我正在制作一个visual studio包,当右键单击某些类型的文件时,它会在解决方案资源管理器中创建一个上下文菜单。我有菜单工作但我需要抓住完整路径而不是文件名。我这样做是因为在上下文菜单中选择一个选项会打开一个命令行程序,该程序将完整路径作为一个参数。

现在它看起来像这样:

    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应用程序对象的解决方案,但它运行时看起来非常笨重。

1 个答案:

答案 0 :(得分:1)

它最终取决于层次结构的类型(并非所有项目都支持“完整路径”概念),但对于大多数层次结构,此方法应该取回您所需的内容:

IVsHierarchy.GetCanonicalName(uint itemid, out string pbstrName);