【问题标题】:How to get the details of the selected item in solution explorer using vs package如何使用 vs 包在解决方案资源管理器中获取所选项目的详细信息
【发布时间】:2019-10-18 06:12:36
【问题描述】:

我正在尝试创建一个 VS 包,我在其中添加了一个菜单命令到上下文菜单,因此当您在解决方案资源管理器中右键单击一个项目时它会出现。现在单击命令时,我想显示一个包含项目详细信息的弹出窗口,您可以在该窗口上单击鼠标右键并调用该命令。

现在我将如何获取有关所选项目的信息?我可以使用任何服务来获取有关该项目的任何详细信息吗?

【问题讨论】:

  • 你想显示客户端对象的属性吗?

标签: c# visual-studio-2010 vs-extensibility vspackage


【解决方案1】:
private static EnvDTE80.DTE2 GetDTE2()
    {
        return GetGlobalService(typeof(DTE)) as EnvDTE80.DTE2;
    }
private string GetSourceFilePath()
    {
        EnvDTE80.DTE2 _applicationObject = GetDTE2();
        UIHierarchy uih = _applicationObject.ToolWindows.SolutionExplorer;
        Array selectedItems = (Array)uih.SelectedItems;
        if (null != selectedItems)
        {
            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;
            }
        }
        return string.Empty;
    }

上述函数将返回所选项目(文件)的完整路径。基本上从 DTE2 实例中获取灵魂资源管理器,您将从中获取有关解决方案资源管理器的所有信息。

【讨论】:

  • 在哪里添加这些方法以及我们将从哪里调用它们。
  • @Sharad 就像注册事件的回调一样。您需要将此功能链接到给定的菜单项。
  • 这不适用于基于 C++ 模板的项目。你能推荐一个替代方案吗?
  • 对不起,@Bandara。我刚刚注意到你的问题,我不再有 Windows 和 Visual Studio 环境来尝试你的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
  • 2011-02-04
  • 2016-08-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多