1

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

4

1 回答 1

1

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

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