2014-10-29 67 views
5

我有一個使用TFS API創建工作項的控制檯應用程序。我希望應用程序在創建的工作項打開的情況下啓動Visual Studio。我想:如何從外部進程打開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中啓動工作項?

回答

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 

您可以創建批處理文件並傳入工作項目編號以使其更容易。

相關問題