22

我想创建一个批处理文件,以便在单击时从我的 VS 项目中进行构建。我整天都在执行以下步骤:

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

    msbuild mySolution.sln /p:configuration=debug

如前所述,我想一键完成所有这些过程。所以,我正在尝试创建一个 .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

4 回答 4

20

您不在正确的目录中,您需要 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 的行。

于 2013-07-23T21:49:06.627 回答
4

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

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

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

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

于 2018-02-20T19:51:59.403 回答
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

于 2017-12-04T13:55:41.627 回答
2

如果你不想 cd 到 msbuild 安装目录,你也可以像这样加载 Visual Studio 环境变量:

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

(另见这个问题

于 2015-10-05T12:26:29.150 回答