2010-04-28 151 views
8

我想用批處理文件來構建.NET解決方案來構建解決方案。如何使用批處理文件

我知道我需要使用下面的語句

devenv /build release "D:\Source Code\Source\test.sln" 

但我不知道如何創建批處理文件將在VS命令提示符下執行。

+0

您的問題不清楚。你試過了什麼,結果如何? – Will 2010-04-28 12:57:20

+0

如果我將上述命令放入批處理文件中,它將在Windows命令提示符下執行。但我希望它在VS命令提示符下執行。 – Ram 2010-04-28 13:05:05

回答

14

Visual Studio的命令提示符只是用來加載一些變量和路徑設置。就是這樣,沒有什麼特別的,它不是一個不同的命令提示符,它是一些配置了一些設置的命令提示符。您可以通過頂部以下行加載在自己的批處理文件相同的設置:

call "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86 

(顯然,對於不同版本的VS,路徑可能略有變化)

您可以替換「 x86「以及適合您機器的體系結構。允許的值爲:

  • AMD64
  • IA64
  • x86_amd64
  • x86_ia64

這麼說,我不認爲你真的需要加載所有的變量/路徑,你所需要做的就是提供的完整路徑0文件。你可以代替試試這個:

"c:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" /build release "D:\Source Code\Source\test.sln" 

+0

這對我很有用。但是當我把它放在一個bat文件中並運行它時,它就退出了而沒有構建解決方案。 如何保持命令窗口打開以顯示構建過程的當前狀態? – Ram 2010-05-03 10:36:55

+0

@Ram將暫停命令添加到批處理文件的末尾,並且該窗口將保持打開狀態,直到您按任意鍵。 – Kildareflare 2011-05-26 12:31:11

0

不知道如果我理解這個問題。

只需創建一個名爲test.bat的文件,添加你上面那個文件書面聲明,然後就打開VS命令提示符,然後鍵入[pathtobatfile] \ test.bat的。

+0

以及我不想轉到VS命令提示符。因爲它是一個批處理文件,我希望它在VS命令提示符下執行,當我點擊它時。 – Ram 2010-04-28 13:03:56

+0

然後,正如Simon所說的,您只需要將批處理文件添加到批處理文件頂部的VS命令行快捷方式中,然後只需創建該批處理文件的快捷方式即可。 – 2010-04-28 13:11:23

4

樣品批處理文件(同樣,路徑將不同版本的Visual Studio的改變)下面將檢測通過查看它的安裝包含devenv.exe的目錄在註冊表中(對於VS2005,可以很容易地適用於其他版本)並執行devenv.exe。這是你在找什麼?

@echo off 

CALL :GETVS2005DIR 
IF "%VS2005DIR%" == "" GOTO NOVS2005 
IF NOT EXIST "%VS2005DIR%" GOTO NOVS2005 

%VS2005DIR%devenv.exe ... 
GOTO :EOF 

:GETVS2005DIR 
for /f "tokens=1,2* delims= " %%i in ('reg query HKLM\Software\Microsoft\VisualStudio\8.0 /v InstallDir') do set VS2005DIR=%%k 
GOTO :EOF 

:NOVS2005 
echo. 
echo Visual Studio 2005 installation directory not found 
echo. 
GOTO :EOF 

還要注意的是,只要你的解決方案不包含安裝項目,你通常可以使用MSBUILD,這是簡單的機器上工作沒有安裝Visual Studio來構建它:

REM Check MsBuild is available (this is for V2.0, use a different version if desired) 
SET MSBUILD=%WINDIR%\Microsoft.NET\Framework\v2.0.50727\MsBuild.exe 
IF NOT EXIST "%MSBUILD%" GOTO NOMSB 

"%MSBUILD%" MySolution.sln /t:rebuild /p:configuration=Debug /verbosity:quiet 
GOTO :EOF 

:NOMSB 
echo. 
echo MSBUILD not found 
echo. 
GOTO :EOF