有没有办法使用ENVDTE选择项目?

时间:2013-03-14 06:02:43

标签: c# com envdte

我想使用ENVDTE为项目添加服务引用。唯一的方法是通过以下命令弹出Add service Reference窗口:

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

启动命令后。

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

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

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

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

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

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