在vs2008下面提供了devenv.com命令行方式,我們可以從VS安裝目錄..\MicrosoftVisual Studio 9\Common7\IDE下面找到它,以下是幾個(gè)常見用法(VS 2005對應(yīng)的目錄下也有這樣的工具):
用法:
devenv.com [solutionfile | projectfile |anyfile.ext] [switches]
devenv.com的第一個(gè)參數(shù)通常是一個(gè)解決方案文件或項(xiàng)目文件。
如果您希望在編輯器中自動(dòng)打開文件,
也可以使用任何其他文件作為第一個(gè)參數(shù)。當(dāng)您輸入項(xiàng)目文件時(shí),IDE
會(huì)在項(xiàng)目文件的父目錄中查找與該項(xiàng)目文件具有相同
基名稱的 .sln 文件。如果不存在這樣的 .sln 文件,
IDE 將查找引用該項(xiàng)目的單個(gè) .sln 文件。如果不存在這樣的單個(gè)
.sln 文件,則 IDE 將創(chuàng)建一個(gè)具有默認(rèn) .sln 文件名的未保存
的解決方案,其基名稱與項(xiàng)目文件的基名稱相同。
命令行生成:
devenv.comsolutionfile.sln /build [ solutionconfig ] [ /project projectnameorfile [
/projectconfig name ] ]
可用的命令行開關(guān):
/Build 使用指定的解決方案配置生成解決方案或
項(xiàng)目。例如“Debug”。如果可能存在多個(gè)平臺(tái),
則配置名稱必須用引號(hào)括起來
并且包含平臺(tái)名稱。例如“Debug|Win32”。
/Clean 刪除生成結(jié)果。
/Command 啟動(dòng) IDE 并執(zhí)行該命令。
/Deploy 生成并部署指定的生成配置。
/Edit 在此應(yīng)用程序的運(yùn)行實(shí)例中打開
指定文件。如果沒有正在運(yùn)行的實(shí)例,
則啟動(dòng)一個(gè)具有簡化窗口布局的新實(shí)例。
/LCID 設(shè)置 IDE 中用于用戶界面的默認(rèn)語言。
/Log 將 IDE 活動(dòng)記錄到指定的文件以用于故障排除。
/NoVSIP 禁用用于 VSIP 測試的 VSIP 開發(fā)人員許可證密鑰。
/Out 將生成日志追加到指定的文件中。
/Project 指定生成、清理或部署的項(xiàng)目。
必須和 /Build、/Rebuild、/Clean 或 /Deploy 一起使用。
/ProjectConfig 重寫解決方案
配置中指定的項(xiàng)目配置。例如“Debug”。如果可能存在
多個(gè)平臺(tái),則配置名稱必須用引號(hào)括起來
并包含平臺(tái)名稱。例如“Debug|Win32”。
必須和 /Project 一起使用。
/Rebuild 先清理,然后使用指定配置生成
解決方案或項(xiàng)目。
/ResetAddin 移除與特定外接程序關(guān)聯(lián)的命令和命令用戶界面。
/ResetSettings 恢復(fù) IDE 的默認(rèn)設(shè)置,還可以重置為
指定的 VSSettings 文件。
/ResetSkipPkgs 清除所有添加到 VSPackages 的 SkipLoading 標(biāo)記。
/Run 編譯并運(yùn)行指定的解決方案。
/RunExit 編譯并運(yùn)行指定的解決方案然后關(guān)閉 IDE。
/SafeMode 以安全模式啟動(dòng) IDE,加載最少數(shù)量的窗口。
/Upgrade 升級(jí)項(xiàng)目或解決方案以及其中的所有項(xiàng)目。
并相應(yīng)地創(chuàng)建這些文件的備份。有關(guān)備份
過程的更多信息,請參見
“Visual Studio 轉(zhuǎn)換向?qū)А鄙系膸椭?/p>
產(chǎn)品特定的開關(guān):
/debugexe 打開要調(diào)試的指定可執(zhí)行文件。
命令行的其余部分作為它的參數(shù)
傳遞到此執(zhí)行文件。
/useenv 使用 PATH、INCLUDE、LIBPATH和 LIB 環(huán)境變量
而不是使用 VC++ 生成的 IDE 路徑。
要從命令行附加調(diào)試器,請使用:
VsJITDebugger.exe -p <pid>
編譯的工程版本必須和VS版本對應(yīng),否則會(huì)提示該項(xiàng)目沒有被轉(zhuǎn)換。
還有一點(diǎn)需要注意,如果在sln里面設(shè)置了dependence,一旦Clear某個(gè)Project,會(huì)導(dǎo)致其他相依賴的Project也會(huì)被Clear,造成編譯時(shí)間上的浪費(fèi),為了節(jié)省時(shí)間,你可以重命名sln或者刪除sln,這樣編譯就不會(huì)考慮工程間依賴關(guān)系。
devenv 的第一個(gè)參數(shù)通常是一個(gè)解決方案文件或項(xiàng)目文件。如果您希望在編輯器中自動(dòng)打開文件,也可以使用任何其他文件作為第一個(gè)參數(shù)。當(dāng)您輸入項(xiàng)目文件時(shí),IDE會(huì)在項(xiàng)目文件的父目錄中查找與該項(xiàng)目文件具有相同基名稱的 .sln 文件。如果不存在這樣的 .sln 文件,IDE 將查找引用該項(xiàng)目的單個(gè) .sln 文件。如果不存在這樣的單個(gè).sln 文件,則 IDE 將創(chuàng)建一個(gè)具有默認(rèn) .sln 文件名且未保存的解決方案,其基名稱與項(xiàng)目文件的基名稱相同。
下面以一個(gè)批處理例子說明devenv.com的用法,F(xiàn)在我們要編譯著名的cximage600工程。cximage600工程有下面的項(xiàng)目:
我們把demo工程設(shè)為主調(diào)用工程。然后我寫一個(gè)批處理文件編譯CxImgLib.sln。
[plain]
rem ************************************************
rem * Script to compile the solutions of CxImgLib *
rem * Created by: zhujincan *
rem * Created 2012.12.06 *
rem ************************************************
rem set environment variables:
set _devenv="%VS90COMNTOOLS%..\..\Common7\IDE\devenv.com"
rem set compile log
set _log="%~dp0compileResults.log"
echo [%DATE% %Time%] Start compile sequence >%_log%
echo Used compile configuration is %buildAnyCPU% >>%_log%
rem Start compile************************************************
set _solution_file="%~dp0CxImgLib.sln"
%_devenv% %_solution_file% /build "Debug|Win32" /Out %_log%
if not %errorlevel% == 0 echo %_solution_file% failed! Error: %errorlevel% >>%_log%
if %errorlevel% == 0 echo %_solution_file% compiled successful >>%_log%
rem If compile failed stop processing:
if not %errorlevel% == 0 pause
echo [%DATE% %Time%] Finished compile sequence >>%_log%
pause
rem ************************************************ rem * Script to compile the solutions of CxImgLib * rem * Created by: zhujincan * rem * Created 2012.12.06 * rem ************************************************ rem set environment variables: set _devenv="%VS90COMNTOOLS%..\..\Common7\IDE\devenv.com" rem set compile log set _log="%~dp0compileResults.log" echo [%DATE% %Time%] Start compile sequence >%_log% echo Used compile configuration is %buildAnyCPU% >>%_log% rem Start compile************************************************ set _solution_file="%~dp0CxImgLib.sln" %_devenv% %_solution_file% /build "Debug|Win32" /Out %_log% if not %errorlevel% == 0 echo %_solution_file% failed! Error: %errorlevel% >>%_log% if %errorlevel% == 0 echo %_solution_file% compiled successful >>%_log% rem If compile failed stop processing: if not %errorlevel% == 0 pause echo [%DATE% %Time%] Finished compile sequence >>%_log% pause
該批處理文件放在源碼根目錄下(即和解決方案文件的同一級(jí)目錄下),生成日志放在源碼根目錄下compileResults.log中.這個(gè)批處理文件可以和svn的源碼更新命令綁在一起實(shí)現(xiàn)從源碼更新到編譯,也可以放在服務(wù)器上作為每日構(gòu)建的腳本。