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

标签 visual-studio tfs

我有一个控制台应用程序,它使用 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,但前提应该是一样的。
  • 在Shell32.dll中声明函数
  • 使用适当的参数调用函数

  • 以下是从命令窗口使用工作项启动 TFS 的方法:
        START vstfs:///WorkItemTracking/WorkItem/999999?url=http://mytfsserver:8080/tfs/defaultcollection
    

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

    关于visual-studio - 如何从外部进程打开 Visual Studio 中的现有工作项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26630388/

    相关文章:

    tfs - Team Foundation 服务器测试

    vb.net - 在VB.NET项目中使用OpenCV库

    TFS API BranchObjectCreated 事件不会触发

    c# - Parallel.ForEach 循环的执行方式类似于串行循环

    C++ try/catch 不捕获异常

    tfs - 允许某些用户绕过 TFS 上的门控 checkin

    TFS 和 MSBuild : how to get latest changeset version

    visual-studio - 是否可以在 Visual Studio 的堆栈中复制和粘贴文本?

    c++ - Mozilla 对象的 Visual Studio 调试器可视化工具

    visual-studio - 使用 Visual Studio 的 QNetworkAccessManager 问题