【问题标题】:How to build solution using batchfile如何使用批处理文件构建解决方案
【发布时间】:2011-02-13 08:17:16
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您的问题不清楚。您尝试了哪些方法,结果如何?
  • 如果我把上面的命令放在一个批处理文件中,它将在 Windows 命令提示符下执行。但我希望它在 VS 命令提示符下执行。

标签: .net visual-studio visual-studio-2008 build


【解决方案1】:

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路径会有所不同)

【讨论】:

  • 这对我有用。但是当我把它放在一个 bat 文件中并运行它时,它没有构建解决方案就退出了。如何保持命令窗口打开以显示构建过程的当前状态?
  • @Ram 将暂停命令添加到批处理文件的末尾,窗口将保持打开状态,直到您按任意键。
  • @Ram 检查发布文件夹。请注意,您选择发布而不是调试。
【解决方案2】:

下面的示例批处理文件将通过在注册表中查找包含 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 

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 好吧,我不想转到 VS 命令提示符。因为它是一个批处理文件,所以我希望它在我单击它时在 VS 命令提示符下执行。
    • 然后正如西蒙所说,您需要做的就是在批处理文件顶部添加对由 VS 命令行快捷方式执行的批处理文件的调用,然后您所需要做的就是创建一个快捷方式到那个批处理文件。
    猜你喜欢
    • 2011-04-22
    • 1970-01-01
    • 2019-11-14
    • 2013-07-02
    • 1970-01-01
    • 2019-12-06
    • 2012-12-16
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多