Как скомпилировать проект Visual Studio из командной строки?


Я пишу сценарий цикла checkout, build, distribution, test и commit для большого решения на C++, которое использует монотонно, CMake, Visual Studio Express 2008 и пользовательские тесты.

все остальные части кажутся довольно прямолинейными, но я не вижу, как скомпилировать решение Visual Studio без получения графического интерфейса.

скрипт написан на Python, но ответ, который позволит мне просто позвонить в: os.система делать.

6 92

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 (с помощью ОС.функцию 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

Итак, как это сделать.

  1. запустить команда окно

  2. указать путь к программа MSBuild.exe

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe

  1. введите путь к проектному решению, например

"C:\Users\Clark.Kent\Documents\visual studio 2012\Projects\WpfApplication1\WpfApplication1.sln"

  1. добавьте любые флаги, которые вам нужны После пути решения.

  2. пресс введите

Примечание Вы можете получить помощь о всех возможных флагах, таких как

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 дней их использования, как это делает" бесплатный " графический интерфейс Visual Studio Community edition. С требованием регистрации Microsoft на месте, что версия вряд ли является бесплатным. Бесплатно-как-в-facebook если угодно...

MSBuild - ваш друг.

msbuild "C:\path to solution\project.sln"

DEVENV хорошо работает во многих случаях, но на WIXPROJ для создания моего установщика WIX все, что я получил, - это "катастрофическая" ошибка в журнале Out.

Это работает: MSBUILD / Path / PROJECT.WIXPROJ /t: Build /p: Configuration=Release