2010-04-28 114 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