2014-02-13 25 views
1

我有要求使用devenv.exe來建立我們的VS2010項目。我需要項目一次構建1,因爲同時運行多個構建會導致問題。我在工具 - >選項 - >項目中設置了併發版本的數量爲1 &解決方案 - >生成並運行。當我直接從VS2010執行構建時,一切工作都會問到預期的結果。非併發版本使用DevEnv.exe

------ Rebuild started: Project: project1, Configuration: Release Win32 ------ 
. 
Compile Output 
. 
------ Rebuild started: Project: project2, Configuration: Release Win32 ------ 
. 
Compile Output 
. 

但是,當我在命令行

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" C:\Users\Me\project\MySolution.sln /rebuild "Release|win32" /project C:\Users\Me\project\MyProject.vcxproj /out C:\DevEnv.log 

運行它,它開始構建項目並行。

Microsoft (R) Visual Studio Version 10.0.30319.1. 
Copyright (C) Microsoft Corp. All rights reserved. 
1>------ Rebuild All started: Project: project1, Configuration: Release Win32 ------ 
2>------ Rebuild All started: Project: project2, Configuration: Release Win32 ------ 
3>------ Rebuild All started: Project: project3, Configuration: Release Win32 ------ 
4>------ Rebuild All started: Project: project4, Configuration: Release Win32 ------ 

是否有一個標誌或設置,我錯過了讓這些版本在使用命令行時一次運行1?

編輯:應該指出,我正在Jenkins運行這個構建。在命令提示符下運行上述命令時,它似乎工作正常。但在Jenkins中運行該命令會導致構建並行執行。也許有一些環境變量需要設置?

回答

0

我從來沒有見過任何人嘗試使用devenv.exe從命令行構建解決方案。我認爲這是因爲devenv.exe Visual Studio。您可能更適合使用MSBuild。 MSBuild應該可以做VS,因爲VS在底層使用了MSBuild。它應該能夠在不修改的情況下構建解決方案和/或項目文件。

既然你說你正在使用Jenkins作爲CI,那麼請查看Jenkins的這個MSBuild插件。

https://wiki.jenkins-ci.org/display/JENKINS/MSBuild+Plugin

+0

感謝您的建議,但正如我在第一行說:「我必須使用的devenv.exe構建我們的VS2010項目的要求。」使用MSBuild的問題是它計算構建順序的方式。 Devenv只是遵循解決方案文件中手動設置的內容。 MSBuild根據每個項目文件中的依賴項設置的內容創建一個依賴關係樹,然後根據此建立一個構建順序。問題是我們有一些項目不能設置爲我們正在編譯的項目的直接依賴關係。 – Spacebob