Как создать пакетный файл для командной строки Visual Studio

Я хочу создать пакетный файл, чтобы Visual Studio 2008 x64 Cross Tools Command Prompt постоянно что-то делал на моем ПК, вот senario.

svn update
delete some files
MSBuild MySolutiuon.sln
delete some files
xcopy somefiles
MSBuild AutomateBuildConfiguration.xml /p:Configuration=Release
xcopy some files
delete somefiles
xcopy some files

create a Zip file if it is possible // it is not neccessary

Я могу сделать большую часть этого с помощью простой командной строки и MSBuild parts с командной строкой Visual Studio, но, поскольку эти два приглашения разные, я не могу завершить свой senario.

Я протестировал все команды и отлично у меня работает. Дайте мне решение, если вы знаете, что мне делать.

Я проверил это и ничего не понял. Спасибо заранее.


person Nasser Hadjloo    schedule 04.05.2011    source источник


Ответы (7)


Сделайте первую строку вашего командного файла настроенной средой VS:

call "C:\Program Files\Microsoft Visual Studio 2008\VC\vcvarsall.bat" x86_amd64
svn update
delete some files
MSBuild MySolutiuon.sln
... more commands ...

x86_amd64 — это аргумент, используемый для командной строки x64 Cross Tools.

После запуска vcvarsall.bat msbuild будет доступен в пути для остальных команд в пакетном файле.

В качестве альтернативы, если вы не используете Visual C++, вы можете настроить среду с помощью этой строки (вместо вызова vcvarsall.bat):

Для VS 2008:

call "%vs90comntools%vsvars32.bat"

Для VS 2010:

call "%vs100comntools%vsvars32.bat"

Для VS 2012:

call "%vs110comntools%vsvars32.bat"

Для VS 2013:

call "%vs120comntools%vsvars32.bat"

Для VS 2015:

call "%vs140comntools%vsvars32.bat"

Для VS 2017:

Пакет теперь называется vc, а не vs.

call "%vs140comntools%\..\..\VC\Auxiliary\Build\vcvars32.bat"

или лучше

call "%vs140comntools%\VsDevCmd.bat"
person sean e    schedule 04.05.2011
comment
Я не уверен, что команда MSBuild будет работать правильно. и на самом деле у меня должен быть один командный файл. он будет использоваться в качестве моего внутреннего инструмента для продолжения интеграции ночью, так что я не смогу запускать их самостоятельно. - person Nasser Hadjloo; 04.05.2011
comment
Я имею в виду, что я не уверен, что этот трюк MSBuild обнаружит как внутреннюю команду, потому что он работает с простой командной строкой, не так ли? Как это сделать (настроить пакетный файл с подсказкой VS)? - person Nasser Hadjloo; 04.05.2011
comment
+1 д. Хотя я не смог найти эквивалентную переменную среды cmd для VS2010; вызов %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat у меня работает. - person Christo; 30.07.2012
comment
Это работает и для vs12. Команда для меня: call C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat x86_amd64 Если вы перейдете к файлу vcvarsall.bat, щелкните правой кнопкой мыши, отредактируйте, вы увидите все различные команды. - person thed0ctor; 19.12.2012
comment
Существует переменная окружения VS120COMNTOOLS (120 означает VS 2013; VS 2012 будет 110 и т. д.). Его использование позволяет избежать жесткого указания пути к установке VS. - person Violet Giraffe; 14.01.2015
comment
Похоже, что переменная среды для VS2017 должна быть %vs150comntools%, а не %vs140comntools%? - person Jeremy Friesner; 20.06.2018

Для Visual Studio 2015:

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

Для Visual Studio 2013:

call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86_amd64
person Michael Sander    schedule 08.01.2014

Для Visual Studio 2010 это отлично работает:

call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
person Shane    schedule 11.08.2012

Для Visual Studio 2019:

call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64
person A-312    schedule 04.08.2019
comment
У меня нет этого пути. Я что-то упускаю? Спасибо! - person user840718; 10.12.2019
comment
Спасибо! У меня были проблемы с поиском правильного пути. Поскольку у меня есть VS 2019 Professional, я просто заменил Community на Professional. Я бы предположил, что вы замените его на Enterprise, если у вас есть Enterprise. - person Joe Gayetty; 29.05.2020
comment
Это случайным образом ломается для меня, когда я запускаю пакетный файл несколько раз из одного и того же экземпляра cmd.exe. Каким-то образом это вносит изменения в среду, которые сохраняются после завершения пакетного выполнения. Также я должен спросить, чем это отличается от C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat, который запускается по умолчанию в меню «Пуск» для командной строки разработчика. - person Zyl; 21.06.2020

И для Visual Studio 2012:

call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86_amd64
person Good Samaritan    schedule 10.01.2014

Я написал bat-файл, используя следующие шаги, и это сработало.

call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86_amd64
echo call complete
pause
cd C:\tfs.sbdinc.com
tf get $/MAC_MBA/CoreApplicationAndReports/Main/Application/Solution /recursive
echo get complete
pause
cd C:\tfs\CoreApplicationAndReports\Main\Application\Solution
msbuild
echo build complete
pause
devenv mba.sln
echo ide launch complete
pause
person sam    schedule 19.08.2015

Попробуйте выполнить командный файл ниже, чтобы запустить тест MS/тест Nunit для тестов C#.

@echo off
echo Run the CMD(Command Prompt) Program.
echo.
pause
cls
echo Target Framwork
CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319
echo 'Project Path'
msbuild  "C:\Git\ElementsCloud.Tests\Source\ElementsCloud.Tests.sln"/p:configuration=debug
pause
echo 'Project Dll path' and Execute tests
cd C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\TestWindow
vstest.console.exe "C:\Git\ElementsCloud.Tests\Source\Selenium.Tests\bin\Debug\net471\Selenium.Tests.dll" /Tests:Test1,Test2,Test3
echo. 
PAUSE
EXIT
person Deiveegarajan G    schedule 22.08.2019
comment
Что делает EXIT в конце? Он просто выходит из инструментов сборки или из всей командной строки? - person Dom; 29.08.2019