我想向使用 ENVDTE 的项目添加服务引用。唯一的方法是通过以下命令弹出“添加服务参考”窗口:
_applicationObject.ExecuteCommand("Project.AddServiceReference", string.Empty);
但此命令仅适用于当前选定的项目。有没有办法选择要添加服务引用的特定项目?
DTE2.SelectedProjects
无法选择项目,只能帮助检索选定的项目。
您必须像这样浏览解决方案树:
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);
最后,我不确定,但您可能必须在启动命令之前选择项目的“服务引用”节点。