Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 是否可以创建Visual Studio宏以在调试器中启动特定项目?_Visual Studio_Visual Studio 2008_Macros - Fatal编程技术网

Visual studio 是否可以创建Visual Studio宏以在调试器中启动特定项目?

Visual studio 是否可以创建Visual Studio宏以在调试器中启动特定项目?,visual-studio,visual-studio-2008,macros,Visual Studio,Visual Studio 2008,Macros,我的项目在同一个解决方案文件中同时包含客户端和服务器组件。我通常将调试器设置为在调试时一起启动它们,但通常情况下,我会在调试器之外启动服务器,以便在处理仅客户端的内容时根据需要启动和停止客户端。(这要快得多) 我试图省去在解决方案资源管理器中四处搜索以启动单个项目的麻烦,而更愿意在工具栏上粘贴一个按钮来调用一个宏来启动单个项目的调试器(同时让“F5”类型的调试单独启动这两个进程) 我试着录音,但那并没有产生任何有用的效果 到目前为止,我所能做的就是在解决方案资源管理器中找到项目项: Dim p

我的项目在同一个解决方案文件中同时包含客户端和服务器组件。我通常将调试器设置为在调试时一起启动它们,但通常情况下,我会在调试器之外启动服务器,以便在处理仅客户端的内容时根据需要启动和停止客户端。(这要快得多)

我试图省去在解决方案资源管理器中四处搜索以启动单个项目的麻烦,而更愿意在工具栏上粘贴一个按钮来调用一个宏来启动单个项目的调试器(同时让“F5”类型的调试单独启动这两个进程)

我试着录音,但那并没有产生任何有用的效果

到目前为止,我所能做的就是在解决方案资源管理器中找到项目项:

 Dim projItem As UIHierarchyItem

 projItem = DTE.ToolWindows.SolutionExplorer.GetItem("SolutionName\ProjectFolder\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect)

(这大致取决于宏录制器是如何完成的。我不确定导航UI对象模型是正确的方法,还是应该查看解决方案/项目对象模型)

好的。如果加载了解决方案,则在大多数UI(所有?)上下文中,这似乎都有效:

 Sub DebugTheServer()
    DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
    DTE.ActiveWindow.Object.GetItem("Solution\ServerFolder\ServerProject").Select(vsUISelectionType.vsUISelectionTypeSelect)
    DTE.Windows.Item(Constants.vsWindowKindOutput).Activate()
    DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Debug.Startnewinstance")
 End Sub
从C#外接程序中,以下内容对我很有用:

Dte.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate();
Dte.ToolWindows.SolutionExplorer.GetItem("SolutionName\\SolutionFolderName\\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect);

我是说,它应该可以从任何VisualStudio插件中工作。可能是我遗漏了一些除了EnvDtE和EnvDte80之外的参考资料。是吗?不,如果您的项目不是VS加载项,那么获取DTE对象要比这复杂一点。不确定你的问题是什么,但你可能应该打开一个新的问题,而不是对这个答案发表评论。我看你已经在这里找到了我的要点:它应该帮助你实现你需要的。是的。。但由于缺少名称空间和类,这在.NET4.5中不起作用。我为4.5找到了另一个解决方案。