我寫了一個批處理文件,它在執行時會生成一個visual studio解決方案。該解決方案由幾個C#項目組成。我正在使用MSBuild實用程序。當任何項目出現編譯錯誤時,如何停止進一步編譯? 進一步如何獲取錯誤消息並在命令提示符下顯示它們?在編譯錯誤時立即停止MSBuild處理
8
A
回答
5
建立一個Visual Studio解決方案時,有一個關於第一次失敗的停止不支持。
您可以通過以下步驟解決此:
- 設置環境變量msbuildemitsolution爲1(
set msbuildemitsolution=1
); - 調用MSBuild以從目標VS解決方案生成* .proj文件;
- 在生成的* .sln.proj文件中將目標名爲Build的
RunEachTargetSeparately="true"
更改爲RunEachTargetSeparately="false"
; - 調用MSBuild來構建更新的* .sln.proj文件。
+0
我用.NET 4.0中的msbuild嘗試過。不工作,沒有.proj文件被創建,我通過procmon監視msbuild acvitity以及檢查磁盤文件。 – zhaorufei 2013-06-13 08:40:30
+0
這仍然在.NET 4.0中受支持;確保在通過系統設置設置環境變量時沒有打開命令提示符窗口,如果是這種情況,則打開新的命令提示符窗口。 – 2013-06-13 08:52:27
4
如果您已經發布了批處理文件的相關部分,那麼給出答案會更容易。然而,對於你的問題的第二部分,這裏是一個例子,我是如何在我們構建腳本的一個解決幾乎相同的問題:
msbuild.exe /m /p:Configuration=Release /v:n theSolutionFile.sln >Build.log
if ERRORLEVEL 1 goto :showerror
find "0 Warn" Build.log >nul:
if ERRORLEVEL 1 goto :showerror
goto :EOF
:showerror
echo Build error occurred
exit %ERRORLEVEL%
相關問題
- 1. 立即停止並行編譯
- 2. Make:停止編譯錯誤
- 3. 使用CodeDom編譯時處理錯誤
- 4. MSBuild編譯錯誤怪異
- 5. 停止Parallel.ForEach立即
- 6. IntentService立即停止
- 7. 立即停止NSTimer
- 8. 如何立即停止服務立即
- 9. 在第一次錯誤後立即停止valgrind
- 10. 如何在編譯錯誤時停止Visual Studio 2010
- 11. gcc編譯器在第一個錯誤時不停止
- 12. 任務錯誤處理 - Visual Studio停止
- 13. Webpack停止處理ESLint錯誤。
- 14. c# - 如何停止計時器立即
- 15. 立即停止線程
- 16. Python3 uWSGI立即停止
- 17. 立即停止SFML TcpListener
- 18. Docker立即停止容器
- 19. VB.NET的Process.Start()立即停止
- 20. PHP shell_exec($ cmd)立即停止
- 21. 首先自動停止Visual C++ 2008編譯編譯錯誤?
- 22. 編譯錯誤,同時建立從源
- 23. .text()立即正在處理
- 24. 在遇到錯誤時停止執行批處理腳本
- 25. 斯卡拉 - 地圖上序列,立即停止時元件不能被處理
- 26. brunch.io不處理編譯錯誤
- 27. C#CS0079事件處理編譯錯誤
- 28. 語法和編譯錯誤處理eclipse
- 29. 文件處理編譯錯誤
- 30. 如何在處理核心數據時停止建立內存?
Dupe:http://stackoverflow.com/questions/3297194/stop-msbuild-process-if-a-target-fails – 2011-03-15 13:35:04
@RitchMelton不是一個騙局,因爲它是關於停止解決方案的第一次失敗。 – 2012-01-24 06:03:50