Как скомпилировать проект Visual Studio из командной строки?
Я пишу сценарий цикла checkout, build, distribution, test и commit для большого решения C++, которое использует монотонно, CMake, Visual Studio Express 2008 и пользовательские тесты.
все остальные части кажутся довольно прямыми, но я не вижу, как скомпилировать решение Visual Studio без получения GUI.
скрипт написан на Python, но ответ, который позволит мне просто позвонить в: os.система делать.
6 ответов
Я знаю два способа сделать это.
Способ 1
Первый метод (который я предпочитаю) - использовать в MSBuild:
msbuild project.sln /Flags...
Способ 2
Вы также можете запустить:
vcexpress project.sln /build /Flags...
опция vcexpress возвращается немедленно и не печатает никаких выходных данных. Полагаю, это то, что вам нужно для сценария.
обратите внимание, что DevEnv не распространяется с Visual Studio Express 2008 (я потратил много времени пытаясь понять это, когда у меня впервые возникла аналогичная проблема).
таким образом, конечный результат может быть:
os.system("msbuild project.sln /p:Configuration=Debug")
вы также захотите убедиться, что ваши переменные среды верны, так как msbuild и vcexpress по умолчанию не находятся в системном пути. Либо запустите среду сборки Visual Studio и запустите сценарий оттуда, либо измените пути в Python (с помощью os.функцию putenv).
MSBuild обычно работает, но я сталкивался с трудностями раньше. Возможно, вам больше повезет с
devenv YourSolution.sln /Build
честно говоря, я должен добавить свои 2 цента.
вы можете сделать это с помощью msbuild.exe. Существует много версий msbuild.exe.
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\msbuild.exe C:\Windows\Microsoft.NET\Framework64\v3.5\msbuild.exe C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe
C:\Windows\Microsoft.NET\Framework\v2.0.50727\msbuild.exe C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
используйте нужную вам версию. В основном вы должны использовать последний.
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe
Итак, как это сделать.
запустить команда окно
указать путь к программа MSBuild.exe
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe
- введите путь к решению проекта как
"C:\Users\Clark.Кент\документы\visual studio 2012\Проекты\WpfApplication1\WpfApplication1.sln"
добавьте любые необходимые флаги после пути решения.
пресс ENTER
Примечание Вы можете получить помощь обо всех возможных флагах, таких как
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe / помогите
используя msbuild
как указывали другие, работал на меня, но мне нужно было сделать немного больше, чем просто это. Прежде всего,msbuild
должен иметь доступ к компилятору. Это можно сделать, выполнив:
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
затем msbuild
не было в моем $PATH, поэтому мне пришлось запустить его через его явный путь:
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" myproj.sln
наконец, мой проект использует некоторые переменные, такие как $(VisualStudioDir)
. Кажется, что они не устанавливаются msbuild
поэтому мне пришлось установить их вручную с помощью /property
вариант:
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" /property:VisualStudioDir="C:\Users\Administrator\Documents\Visual Studio 2013" myproj.sln
эта строка, наконец, позволила мне скомпилировать мой проект.
бонус: похоже, что инструменты командной строки не требуют регистрации после 30 дней их использования, как это делает "бесплатный" GUI-интерфейс Visual Studio Community edition. С требованием регистрации Microsoft на месте, эта версия вряд ли бесплатно. Бесплатно-как-в-facebook если угодно...
DEVENV работает хорошо во многих случаях, но на WIXPROJ для создания моего установщика WIX все, что я получил, это "катастрофическая" ошибка в журнале Out.
Это работает: MSBUILD / путь / проект.WIXPROJ /t:Build / p:Configuration=Release