.net 如何使用batchfile构建解决方案

.net 如何使用batchfile构建解决方案,.net,visual-studio,visual-studio-2008,build,.net,Visual Studio,Visual Studio 2008,Build,我想使用批处理文件构建.NET解决方案 我知道我需要使用以下语句 devenv /build release "D:\Source Code\Source\test.sln" 但我不知道如何创建批处理文件,该文件将在VS命令提示符下执行。不确定我是否理解这个问题 只需创建一个名为test.bat的文件,将上面编写的语句添加到该文件中,然后打开VS命令提示符并键入[pathtobatfile]\test.bat。visual studio命令提示符仅加载一些变量和路径设置。仅此而已,没什么特别的

我想使用批处理文件构建.NET解决方案

我知道我需要使用以下语句

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

但我不知道如何创建批处理文件,该文件将在VS命令提示符下执行。

不确定我是否理解这个问题


只需创建一个名为test.bat的文件,将上面编写的语句添加到该文件中,然后打开VS命令提示符并键入[pathtobatfile]\test.bat。

visual studio命令提示符仅加载一些变量和路径设置。仅此而已,没什么特别的,它不是一个不同的命令提示符,它是同一个命令提示符,配置了一些设置。通过在顶部包含以下行,可以在自己的批处理文件中加载相同的设置:

call "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86
(显然,对于不同版本的VS,路径可能会略有变化)

您可以使用适合您机器的体系结构替换“x86”。允许值为:

  • x86
  • amd64
  • x64
  • ia64
  • x86_amd64
  • x86_ia64
也就是说,我认为您实际上不需要加载所有的变量/路径,您真正需要做的就是提供
devenv.exe
文件的完整路径。您可以尝试以下方法:

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

(同样,对于不同版本的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来构建它,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 

你的问题不清楚。您尝试了什么,结果如何?如果我将上述命令放入批处理文件中,它将在Windows命令提示符下执行。但我希望它在VS命令提示符下执行。我不想转到VS命令提示符。由于它是一个批处理文件,我希望在单击它时在VS命令提示符下执行它。然后,正如Simon所说,您需要做的是在批处理文件顶部添加一个调用到由VS命令行快捷方式执行的批处理文件,然后您只需创建一个该批处理文件的快捷方式。这对我来说很有用。但是当我把它放在一个bat文件中并运行它时,它没有构建解决方案就退出了。如何使命令窗口保持打开状态以显示生成过程的当前状态?@Ram将暂停命令添加到批处理文件的末尾,窗口将保持打开状态,直到您按任意键为止。