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

问题描述 投票:0回答:2

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

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

c# visual-studio-2010 vs-extensibility vspackage
2个回答
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 实例获取 Soultion Explorer,您将从中获得有关解决方案资源管理器的所有信息。


0
投票

在上面的代码中,在下面的行中出现异常 “参数不正确。(HRESULT 异常:0x80070057 (E_INVALIDARG))”

string filePath=prjItem.Properties.Item("FullPath").Value.ToString();

© www.soinside.com 2019 - 2024. All rights reserved.