2012-10-06 22 views
1

我正在構建的系統有4個獨立的應用程序,它們在生產中是4個不同的win32服務。在開發期間,我將它們作爲4個獨立的控制檯應用程序運行這些程序需要以特定的順序啓動。如何從msbuild任務啓動調試會話?

我從VS2010中通過右鍵單擊每個項目並選擇調試>啓動一個新實例。這有效,但速度很慢。

我試圖使用運行「多個啓動項目」,但他們都在同一時間開始。更改啓動順序不會有幫助。

所以,我想要做的就是使用MSBuild從構建腳本啓動每個程序。我試圖使用Exec任務,但程序不會推出,調試的進程..

由於所有VS是基於MSBuild的,我知道必須有推出一個項目這樣的方式..

回答

0

您可以使用這種混合的前/後構建事件。您可以在Project Properties -> Build Events中修改最後一個項目。

預生成事件

// Build is going to replace these files, they must not be in use 
taskkill /IM Foo.exe 
taskkill /IM Bar.exe 

Postbuild事件

// VsJITDebugger will ask for which debugger to attach, you can 
// choose currently active VS instance 
VsJITDebugger.exe $(SolutionDir)\Foo\bin\Debug\Foo.exe 
VsJITDebugger.exe $(SolutionDir)\Bar\bin\Debug\Bar.exe 

啓動在每個版本的調試器可能會有點討厭:)更好的辦法是使用批處理腳本的最後一個項目。你可以在Project Properties -> Debug -> Start external program

+0

Arun, VsJitDebugger將程序作爲Windows應用程序運行,而不是作爲控制檯應用程序運行。出現棕色/灰色窗口,然後應用程序崩潰。如果我只是嘗試從資源管理器中雙擊應用程序,這與我得到的行爲相同。我試着從msbuild命令中得到相同的結果。我沒有看到啓動VSjitDebugger來執行控制檯應用程序的方式。 但是,我期望的方法是從構建腳本執行此操作,我從工具>外部工具菜單運行。 – mbalsam

+0

它適用於我,但我創建了一個外部工具命令[img](http://i.imgur.com/BcNtL.png)。 VSJitDebugger顯示一個對話框來選擇VS調試器的實例來連接控制檯應用程序:[img](http://i.imgur.com/xaT1C.png) –

+0

Arun,感謝您的反饋。我放棄了每個服務的硬編碼睡眠價值。它只在DEBUG時間編譯.. – mbalsam

0

我沒有找到解決方案..我在每個應用程序中放入了一個不同的硬編碼延遲,並使用Debug「多個啓動項目」啓動它。有點簡單但更好。