Как выполнить команду msbuild из командного файла
Я хотел бы создать пакетный файл, чтобы сделать сборки из моего проекта VS в щелчке. Во все дни я делаю следующие шаги:
Как уже отмечалось ранее, я хотел бы сделать весь этот процесс одним щелчком. Итак, я пытаюсь создать файл .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" не распознается как внутренняя или внешняя команда, операционная программа или командный файл.
Любой ключ или помощь, чтобы узнать, если это возможно, и если да, то как это сделать, будет очень признателен
Привет!
Ответы
Ответ 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