【问题标题】:Is there a way to select a project using ENVDTE?有没有办法使用 ENVDTE 选择项目?
【发布时间】:2013-03-14 06:02:43
【问题描述】:

我想向使用 ENVDTE 的项目添加服务引用。唯一的方法是通过以下命令弹出“添加服务参考”窗口:

_applicationObject.ExecuteCommand("Project.AddServiceReference", string.Empty);

但此命令仅适用于当前选定的项目。有没有办法选择要添加服务引用的特定项目?

DTE2.SelectedProjects 无法选择项目,只能帮助检索选择的项目。

【问题讨论】:

    标签: c# com envdte


    【解决方案1】:

    您必须像这样浏览解决方案树:

    var se = _applicationObject.ToolWindows.SolutionExplorer;  
    var proj = se.GetItem("PathToYourProject");
    proj.Select(vsUISelectionType.vsUISelectionTypeSelect);
    

    在你启动你的命令之后。

    PathToYourProject 是一个“伪”XPath。如果您在名为“Solution”的解决方案中处理名为“Project”的项目,您的路径将是:“Solution\Project”

    请注意您的项目是否位于解决方案文件夹中。这有点棘手。您必须像这样展开解决方案文件夹:

    var solutionFolder = se.GetItem("PathToYourSolutionFolder");
    if (!solutionFolder .UIHierarchyItems.Expanded)
    {
        solutionFolder .UIHierarchyItems.Expanded = true;
    }
    

    然后您通过这种方式检索并选择您的项目:

    var proj = solutionFolder .UIHierarchyItems.Item("ProjectName");
    proj.Select(vsUISelectionType.vsUISelectionTypeSelect);
    

    最后,我不确定,但您可能必须在启动命令之前选择项目的“服务引用”节点。

    【讨论】:

      猜你喜欢
      • 2019-06-11
      • 1970-01-01
      • 2010-10-29
      • 2022-01-05
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      相关资源
      最近更新 更多