如何使用VS包获取解决方案资源管理器中所选项目的详细信息

8

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

那么,我如何获取有关所选项目的信息?是否有任何服务可以用来获取有关该项目的任何详细信息?


你想展示客户端对象的属性吗? - nilobarp
1个回答

21
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
@Sharad,这就像为事件注册回调函数一样。您需要将此函数链接到给定的菜单项。 - gramcha
这对于基于C++模板的项目不起作用。你能提供一个替代方案吗? - Bandara
抱歉,@Bandara。我刚注意到你的问题,但我不再拥有Windows和Visual Studio环境来尝试解决你的问题了。 - gramcha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接