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

时间:2014-10-29 12:28:55

标签: visual-studio tfs

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

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

这将打开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

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

C:\> start vstfs:///Build/Build/111?url=http://mytfs:8080/tfs/mycollection

我可以Open them in Web UI - 但我的用户对Visual Studio更加满意。

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

1 个答案:

答案 0 :(得分: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)

此代码示例来自VFP,但前提应该是相同的。

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

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

    START vstfs:///WorkItemTracking/WorkItem/999999?url=http://mytfsserver:8080/tfs/defaultcollection

您可以创建批处理文件并传入工作项目编号,以便更轻松。