Visual Studio扩展:在解决方案资源管理器中获取当前所选文件的路径

他们

我正在尝试为Visual Studio创建我的第一个扩展,到目前为止,我一直在按照本教程进行入门(http://www.diaryofaninja.com/blog/2014/02/18/who-said-building -visual-studio-extensions-was-hard)。现在,当我在解决方案资源管理器中单击文件时,出现一个自定义菜单项。现在,我的小项目需要在解决方案资源管理器中获取所选文件的路径,但我不知道该怎么做。有什么帮助吗?

----------------------------编辑--------------------- ---------

正如matze所说,答案在我发布的链接中。当我写它的时候我只是没有注意到它。同时,我还在该线程中找到了另一个可能的答案:如何使用vs包在解决方案资源管理器中获取所选项目的详细信息

我在哪里找到此代码:

foreach (UIHierarchyItem selItem in selectedItems)
            {
                ProjectItem prjItem = selItem.Object as ProjectItem;
                string filePath = prjItem.Properties.Item("FullPath").Value.ToString();
                //System.Windows.Forms.MessageBox.Show(selItem.Name + filePath);
                return filePath;
            }

因此,这里有两种获取所选文件路径的方法:)

马佐

您提到的文章已经包含了解决方案。

menuCommand_BeforeQueryStatus在示例代码中查找方法。它使用该IsSingleProjectItemSelection方法获取IVsHierarchy代表项目对象以及所选项目的ID。看来您可以安全地将层次结构强制转换IVsProject并使用其GetMkDocument功能来查询项目的完整路径...

IVsHierarchy hierarchy = null;
uint itemid = VSConstants.VSITEMID_NIL;

if (IsSingleProjectItemSelection(out hierarchy, out itemid))
{
    IVsProject project;
    if ((project = hierarchy as IVsProject) != null)
    {
        string itemFullPath = null;
        project.GetMkDocument(itemid, out itemFullPath);
    }
}

我不想将文章中的整个代码复制到此答案中,但是该IsSingleProjectItemSelection函数如何获取所选项目可能会很有趣因此,我只是添加一些注释,以指导正确的方向...该方法使用GetCurrentSelection全局IVsMonitorSelection服务方法来查询当前选定的项目。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Visual Studio 2017 - 如何在“将解决方案添加到源代码管理”时禁用自动提交

Windows 10 文件资源管理器:查找名称中带有括号的文件和文件夹

找不到要通过 git bash 删除的文件,但它显示在文件资源管理器中

源代码管理资源管理器不检索新签入的文件

如何在 Linux 中设置任何文件管理器以显示像 Windows 资源管理器中的长度功能一样的持续时间?

解决方案在 Visual Studio 中构建,但 Jenkins 引发资产异常

模型中的表不在服务器资源管理器表中

新创建的 SSIS 包未显示在解决方案资源管理器中,能够在包位置看到 .dtsx 文件

Visual Studio 代码资源管理器设置

更新到最新的 subversion 后,Ankh SVN 未向 Visual Studio 中的解决方案添加新文件

如何在 Atmel Studio 中显示解决方案资源管理器

如何在 Visual Studio 中为不属于解决方案的 Python 文件管理 Python 搜索路径或引用?

Spyder 中的变量资源管理器

在多平台解决方案中构建 Visual Studio C++ 项目

我可以访问位于 Visual Studio (.net/C#) 中不同解决方案中的源代码吗

Visual Studio 测试资源管理器 - 使用 CMake 和远程构建的 GTest

Python Windows 资源管理器刷新 PostMessage

在文件资源管理器中单击相关文件时如何打开应用程序?

无法在 Visual Studio 2019 中打开解决方案的属性

Process.Start 打开资源管理器

在 Visual Studio Code 中,有没有办法看到左边的资源管理器和右边的大纲?

我的解决方案资源管理器中没有 Startup.cs 和 appsettings.jason 文件,如何在我的项目中实现数据库连接

在 SaveFileDialog 之后打开资源管理器并重定向到特定路径

如何通过 bash 在文件资源管理器中打开 Windows 启动文件夹?

文件资源管理器如何打开文件?

文件资源管理器不会显示 PowerShell 模块目录,否则在 $env:psmodulepath 中可见

pyqt5 在文件资源管理器中打开 ftp url

我可以在 Visual Studio 中设置默认的“活动解决方案平台”吗?

用户从文件资源管理器中选择图像后如何立即显示图像?

文件类型在 Windows 资源管理器中显示不正确