如何从批处理文件中执行'msbuild'命令

时间:2013-07-23 21:19:43

标签: visual-studio-2010 visual-studio batch-file console

我想创建一个批处理文件,以便点击我的VS项目中的构建。我每天都会执行以下步骤:

  1. 以administrador
  2. 打开cmd控制台
  3. 转到我的项目/解决方案的路径(使用CD ..,CD命令)
  4. 编写以下命令进行构建:

    msbuild mySolution.sln / p:configuration = debug

  5. 如前所述,我想只需点击一下即可完成所有这些过程。所以,我正在尝试创建一个.bat文件来完成它。

    这是我的批处理文件的代码:

    set location="C:\myPath\..\MyFolderSolution"
    set pathMSBuild = "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe"
    
    @echo off
    cls
    
    call %pathMSBuild%
    cd %location%
    msbuild.exe "lucre.sln" /p:configuration=debug
    pause
    

    但是,当我尝试执行批处理文件时,出现以下错误: 'msbuild'不被识别为内部或外部命令,可操作程序或批处理文件。

    任何线索或帮助,知道是否可能,如果有,如何做到这一点将非常感谢

    问候!

4 个答案:

答案 0 :(得分:19)

你不在正确的目录中,你需要cd到msbuild所在的目录。试试这个:

set pathMSBuild="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\"
@echo off
cls
cd %pathMSBuild%
msbuild.exe "C:\myPath\..\MyFolderSolution\lucre.sln" /p:configuration=debug
pause

或者您可以将msbuild目录添加到路径中,并使用set和cd跳过这些行。

答案 1 :(得分:3)

这两个答案都使用硬编码路径,这可能并不总是有效。 请改用:

@if exist "%VS100COMNTOOLS%vsvars32.bat" call "%VS100COMNTOOLS%vsvars32.bat"

VS100更改为任何其他版本,您也可以逐行放置这些行以同时支持多个版本的VS:

@if exist "%VS100COMNTOOLS%vsvars32.bat" call "%VS100COMNTOOLS%vsvars32.bat"
@if exist "%VS140COMNTOOLS%vsvars32.bat" call "%VS140COMNTOOLS%vsvars32.bat"

如果以这种方式完成,您将不再依赖特定版本的.Net Framework或Visual Studio

答案 2 :(得分:2)

如果您不想cd到msbuild安装目录,还可以加载Visual Studio环境变量,如下所示:

call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86_amd64

(另见Question

答案 3 :(得分:2)

您还可以将MSBuild.exe所在的目录添加到PATH环境变量中,以便您可以在任何地方调用msbuild。

所以在bat文件中它可以是这样的:

cd C:\PathToSoultion\
msbuild TheSolutionName.sln /p:configuration=debug
pause

我知道这个问题已经有好几年了,但我希望这可能有助于某些人。

相关问题