Как выполнить команду msbuild из командного файла - программирование
Подтвердить что ты не робот

Как выполнить команду msbuild из командного файла

Я хотел бы создать пакетный файл, чтобы сделать сборки из моего проекта VS в щелчке. Во все дни я делаю следующие шаги:

  • Открывает консоль cmd как administrador
  • Перейдите к пути моего проекта/решения (используя команды CD.., CD)
  • Напишите следующую команду для сборки:

    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" не распознается как внутренняя или внешняя команда, операционная программа или командный файл.

Любой ключ или помощь, чтобы узнать, если это возможно, и если да, то как это сделать, будет очень признателен

Привет!

4b9b3361

Ответ 1

Вы не находитесь в правильном каталоге, вам нужно записать 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.

Ответ 2

Если вы не хотите использовать cd в каталоге установки msbuild, вы также можете загрузить переменные среды Visual Studio, как это:

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

(См. также Question)

Ответ 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