如何从外部进程打开Visual Studio中的现有工作项?

Jon*_*han 5 tfs visual-studio

我有一个控制台应用程序,它使用TFS API创建工作项.我希望应用程序启动Visual Studio,打开创建的工作项.我试过了:

Process.Start("vstfs:///WorkItemTracking/WorkItem/123?url=http://mytfs:8080/tfs/mycollection")
Run Code Online (Sandbox Code Playgroud)

这将打开Visual Studio(我有2013更新3),并打开一个工作项,说"打开工作项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
Run Code Online (Sandbox Code Playgroud)

我尝试打开另一个TFS项目 - 构建 - 并且工作正常:

C:\> start vstfs:///Build/Build/111?url=http://mytfs:8080/tfs/mycollection
Run Code Online (Sandbox Code Playgroud)

我可以在Web UI中打开它们 - 但我的用户对Visual Studio更熟悉.

那么,如何在VS中启动工作项?

das*_*der 1

我发现我能够使用 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)
Run Code Online (Sandbox Code Playgroud)

这个代码示例来自VFP,但是前提应该是到处都是一样的。

  • 在Shell32.dll中声明该函数
  • 使用正确的参数调用函数

以下是如何从命令窗口使用工作项启动 TFS:

    START vstfs:///WorkItemTracking/WorkItem/999999?url=http://mytfsserver:8080/tfs/defaultcollection
Run Code Online (Sandbox Code Playgroud)

您可以创建一个批处理文件并传入工作项编号以使其更容易。