我有一个控制台应用程序,它使用 TFS API 创建一个工作项。我希望应用程序在打开创建的工作项的情况下启动 Visual Studio。我试过:
Process.Start("vstfs:///WorkItemTracking/WorkItem/123?url=http://mytfs:8080/tfs/mycollection")
这将打开 Visual Studio(我有 2013 update3),并打开一个工作项,上面写着“正在打开工作项 123...”,但 VS 从未真正完成此打开。如果我关闭这个窗口,我会收到一个错误
The given key was not present in the dictionary
.我从命令行/devenv 尝试过,两者都得到了相同的结果:
C:\> start vstfs:///WorkItemTracking/WorkItem/123?url=http://mytfs:8080/tfs/mycollection
C:\> "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" /Tfslink vstfs:///WorkItemTracking/WorkItem/123?url=http://mytfs:8080/tfs/mycollection
我尝试打开另一个 TFS 项目 - 一个构建 - 并且效果很好:
C:\> start vstfs:///Build/Build/111?url=http://mytfs:8080/tfs/mycollection
我可以 Open them in Web UI - 但我的用户更喜欢 Visual Studio。
那么,如何在 VS 中启动工作项?
最佳答案
我发现我能够使用 ShellExecute() 启动 TFS 并加载所需的工作项。
DECLARE INTEGER ShellExecute ;
IN SHELL32.dll ;
INTEGER nWinHandle,;
STRING cOperation,;
STRING cFileName,;
STRING cParameters,;
STRING cDirectory,;
INTEGER nShowWindow
ShellExecute(0, 'OPEN', "vstfs:///WorkItemTracking/WorkItem/999999?url=http://mytfsserver:8080/tfs/defaultcollection", '', '', 1)
这个代码示例来自VFP,但前提应该是一样的。
以下是从命令窗口使用工作项启动 TFS 的方法:
START vstfs:///WorkItemTracking/WorkItem/999999?url=http://mytfsserver:8080/tfs/defaultcollection
您可以创建一个批处理文件并传入工作项编号以使其更容易。
关于visual-studio - 如何从外部进程打开 Visual Studio 中的现有工作项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26630388/