2013-03-14 108 views
1

我要服务引用添加到使用ENVDTE项目。唯一的方法是通过弹出“添加服务参考”窗口的以下命令:有没有一种方法来选择使用ENVDTE项目?

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

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

DTE2.SelectedProjects没有办法选择一个项目,它不仅有助于检索选定的项目。

回答

0

您必须通过解答树这样的导航:

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

后您启动命令。

PathToYourProject是一个 “伪” 的XPath。如果你在一个名为“解决方案”的解决方案被称为“工程”项目workging您的路径将是:“解决方案\工程”

请务必小心,如果你的项目是一个解决方案文件夹。这有点棘手。你必须扩大解决方案文件夹是这样的:

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

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

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

最后,我不知道,但你可能要选择“服务引用“节点之前启动该命令。

相关问题