Как мне скомпилировать проект Visual Studio из командной строки? - PullRequest
101 голосов
/ 31 января 2009

Я пишу сценарий проверки, сборки, распространения, тестирования и фиксации для большого решения C ++, использующего Monotone , CMake , Visual Studio Express 2008 и пользовательские тесты.

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

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

Ответы [ 6 ]

106 голосов
/ 31 января 2009

Я знаю два способа сделать это.

Метод 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 ).

41 голосов
/ 31 января 2009

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

devenv YourSolution.sln /Build 
15 голосов
/ 26 июля 2013

Если честно, я должен добавить свои 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. Нажмите ENTER

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

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

6 голосов
/ 29 сентября 2015

Использование 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 с графическим интерфейсом. При наличии требования о регистрации Microsoft эта версия вряд ли будет бесплатной. Бесплатно, как в Facebook, если что-нибудь ...

3 голосов
/ 31 января 2009

MSBuild - ваш друг.

msbuild "C:\path to solution\project.sln"
2 голосов
/ 09 октября 2014

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

Это работает: MSBUILD /Path/PROJECT.WIXPROJ / t: сборка / p: конфигурация = выпуск

...