Как вы автоматизируете сборку Visual Studio?
Как превратить сборку Visual Studio, которую вы выполняете в IDE, в сценарий, который можно запустить из командной строки?
11 ответов
С VS2008 вы можете сделать это:
devenv solution.sln /build configuration
\Windows\Microsoft.NET\Framework\[YOUR .NET VERSION]\msbuild.exe
Много параметров командной строки, но самый простой из них:
msbuild.exe yoursln.sln
Вот скрипт, который я использую для полной автоматизации сборки командной строки конфигураций x86 и x64 для того же решения с помощью пакетных сценариев.
Он основан на DevEnv.exe, так как он работает, если у вас есть проект установки в вашей сборке (msbuild не поддерживает сборку проектов установки).
Я предполагаю, что ваша установка - 32-битная Windows 7 с установкой Visual Studio 2010 с использованием собственного компилятора x86 и кросс-компилятора x64. Если вы используете 64- битные окна, вам может потребоваться изменить x86_amd64 на amd64 в пакетном скрипте в зависимости от ваших настроек. Это предполагает, что Visual Studio установлен в Program Files, а ваше решение находится в D:\MySoln
Создайте файл с именем buildall.bat и добавьте в него:
D:
cd "D:\MySoln"
if "%1" == "" goto all
if %1 == x86 goto x86
if %1 == x64 goto x64
:x86
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86 < crosscompilex86.bat
goto eof
:x64
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86_amd64 < crosscompilex64.bat
goto eof
:all
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86 < crosscompilex86.bat
if %ERRORLEVEL% NEQ 0 goto eof
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86_amd64 < crosscompilex64.bat
goto eof
:eof
pause
Теперь создайте еще 2 пакетных сценария:
crosscompilex86.bat для сборки версии выпуска сборки x86 и включения этой
devenv MySoln.sln /clean "Release|x86"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
devenv MySoln.sln /rebuild "Release|x86"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
crosscompilex64.bat для сборки версии выпуска сборки x64 и включения этой
devenv MySoln.sln /clean "Release|x64"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
devenv MySoln.sln /rebuild "Release|x64"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
Теперь поместите все 3 пакетных файла в папку с решением вместе с MySoln.sln. Вы можете создавать версии x86 и x64 Release, создав ярлык на рабочем столе, который запускает следующие команды:
- Build All -> D:\MySoln \ buildall.bat
- Build x86 Release Only -> D:\MySoln \ buildall.bat x86
- Build x64 Release Only -> D:\MySoln \ buildall.bat x64
Если вы используете другую конфигурацию, такую как AnyCPU и т. Д., Вам необходимо соответствующим образом настроить вышеуказанные сценарии.
NAnt и MSBuild являются наиболее популярными инструментами для автоматизации вашей сборки в .NET, и вы можете найти обсуждение плюсов и минусов каждого из них в вопросе о переполнении стека. Лучший инструмент для сборки.NET.
Самый простой способ: перейдите в каталог, содержащий файл решения или проекта, и запустите msbuild
(при условии, что у вас Visual Studio 2005 или новее).
Более гибкие способы:
- Читайте на ссылку MSBuild. Существует множество настроек, особенно после установки проекта MSBuild Community Tasks.
- Используйте NAnt. Он существует дольше MSBuild и имеет большую поддержку сообщества, но требует, чтобы вы запустили файл проекта с нуля, а не расширяли существующий, созданный Visual Studio.
Начиная с Visual Studio 2005, все файлы проекта (по крайней мере, для проектов на основе.NET) являются фактическими файлами MSBuild, поэтому вы можете вызвать MSBuild в командной строке и передать ему файл проекта.
Суть в том, что вам нужно использовать "язык сценариев сборки", такой как NAnt или MSBuild (есть и другие, но это основные сейчас), если вы хотите иметь реальный контроль над процессом сборки.
Вот мой пакетный файл с использованием msbuild для конфигурации отладки VS 2010:
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe"
iTegra.Web.sln /p:Configuration=Debug /clp:Summary /nologo
Посмотрите на UppercuT. У него много денег, и он делает то, что вы ищете, и многое другое.
UppercuT использует NAnt для сборки, и это невероятно простая в использовании Build Framework.
Automated Создает так же просто, как (1) имя решения, (2) путь управления исходным кодом, (3) название компании для большинства проектов!
Несколько хороших объяснений здесь: UppercuT
Мне пришлось сделать это для проекта C++ в Visual Studio 2003, поэтому я не знаю, насколько это относится к более поздней версии Visual Studio:
В каталоге, где создается ваш исполняемый файл, будет BuildLog.htm
файл. Откройте этот файл в браузере, а затем для каждого раздела, например:
Creating temporary file "c:\some\path\RSP00003C.rsp" with contents
[
/D "WIN32" /D "_WINDOWS" /D "STRICT" /D "NDEBUG" ..... (lots of other switches)
.\Project.cpp
.\Another.cpp
.\AndAnother.cpp
".\And Yet Another.cpp"
]
Creating command line "cl.exe @c:\some\path\RSP00003C.rsp /nologo"
создайте файл.rsp с содержимым в квадратных скобках (но не включая квадратные скобки) и назовите его как хотите. Кажется, я помню, что у меня были проблемы с абсолютными путями, поэтому вам, возможно, придется убедиться, что все пути относительны.
Затем в свой скрипт сборки добавьте командную строку из BuildLog.htm
файл, но с вашим именем файла.rsp:
cl.exe @autobuild01.rsp /nologo
(обратите внимание, что там также будет раздел link.exe и cl.exe)
Более простым способом является изменение конфигурации проектов и решений VS 2015: перейдите на вкладку "Инструменты" -> "Параметры" -> "Проекты и решения" -> "Построить и запустить" -> "При запуске", когда проекты устарели (выберите "Всегда строить"). VOILA!
Теперь ваша IDE автоматически создаст ваш проект, когда вы запустите (F5). Надеюсь, это поможет, любые отзывы приветствуются.