Как получить команду сборки строки cmd для решения VS? - PullRequest
28 голосов
/ 11 ноября 2008

Это, вероятно, просто, но я застреваю: когда я строю решение в Visual Studio - как извлечь точную строку cmd для текущей команды сборки, чтобы можно было сделать такую ​​же сборку из консоли VisualStudio?

В окне вывода я вижу отдельные проекты в командах построения решения, но не один для всего решения.

Я на VS2005.

Любая помощь будет оценена

Ответы [ 6 ]

22 голосов
/ 11 ноября 2008

Перейдите в меню «Программы»> Microsoft Visual Studio 2005> Инструменты Visual Studio> Командная строка Visual Studio 2005 .

эта командная строка имеет все необходимые переменные среды .NET, установленные для сеанса командной строки. Вы можете изменить каталог на каталог вашего решения (например, c: \ projects \ mySolution) и запустить

Msbuild.exe mySolution.sln

Вы можете увидеть различные доступные опции, используя msbuild /?

Msbuild находится по адресу C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727

поверх msbuild /? быстрая проверка опций, вы можете обратиться к странице Справка по командной строке *1014* MSBuild для получения более подробных объяснений по ее использованию. И как строить конкретные цели в решениях .

14 голосов
/ 11 ноября 2008

В дополнение к тому, что @JohnIdol говорит правильно, я обнаружил, что вам нужно настроить переменные окружения с несколькими VS. Передо мной нет имени командного файла, но вы можете изменить его или «я думаю». Это где-то в дереве программных файлов VS. Кроме того, насколько я помню, вы не хотите быть в стандартной оболочке, а в установочной оболочке .NET для некоторых путей и т.п. Я добавлю детали позже, когда я на ПК с Windows с VS.

РЕДАКТИРОВАТЬ: упомянутый пакетный файл является ярлыком в меню ProgFiles. Вот подробности его свойств.

%comspec% /k ""C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat""x86"

Вот мой пакетный файл, использующий MSBuild для вызова решения.

@echo off

:: setup VS2005 command line build environment
set VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8
set VCINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8\VC
set FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework
set FrameworkVersion=v2.0.50727
set FrameworkSDKDir=C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0
set DevEnvDir=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
set PATH=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;C:\Program Files\Microsoft Visual Studio 8\VC\BIN;C:\Program Files\Microsoft Visual Studio 8\Com
mon7\Tools;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\bin;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\bin;C:\Program Files\Microsoft
 Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\VCPackages;%PATH%
set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\INCLUDE;C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;C:\Program Files\Microsoft Visual
 Studio 8\VC\PlatformSDK\include;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include;%INCLUDE%
set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC
\PlatformSDK\lib;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;%LIB%
set LIBPATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB

echo %0 %*
echo %0 %* >> %MrB-LOG%
cd
if not ""=="%~dp1" pushd %~dp1
cd
if exist %~nx1 (
        echo VS2005 build of '%~nx1'.
        echo VS2005 build of '%~nx1'. >> %MrB-LOG%
        set MrB-BUILDLOG=%MrB-BASE%\%MrB-WORK%.%MrB-NICEDATE%.%MrB-NICETIME%.build-errors.log
        msbuild.exe %~nx1 /t:Rebuild /p:Configuration=Release > %MrB-BUILDLOG%
        findstr /r /c:"[1-9][0-9]* Error(s)" %MrB-BUILDLOG%
        if not errorlevel 1 (
                echo ERROR: sending notification email for build errors in '%~nx1'.
                echo ERROR: sending notification email for build errors in '%~nx1'. >> %MrB-LOG%
                call mrb-email "Mr Build isn't happy about build errors in '%~nx1'" %MrB-BUILDLOG%
        ) else (
                findstr /r /c:"[1-9][0-9]* Warning(s)" %MrB-BUILDLOG%
                if not errorlevel 1 (
                        echo ERROR: sending notification email for build warnings in '%~nx1'.
                        echo ERROR: sending notification email for build warnings in '%~nx1'. >> %MrB-LOG%
                        call mrb-email "Mr Build isn't happy about build warnings in '%~nx1'" %MrB-BUILDLOG%
                ) else (
                        echo Successful build of '%~nx1'.
                        echo Successful build of '%~nx1'. >> %MrB-LOG%
                )
        )
) else (
        echo ERROR '%1' doesn't exist.
        echo ERROR '%1' doesn't exist. >> %MrB-LOG%
)
popd
6 голосов
/ 10 декабря 2008

Для VS .NET 2003 вы можете использовать devenv.exe для сборки решения / проекта из командной строки.

devenv solutionfile.sln  /build solutionconfig

например. использование в командном файле:

call "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat"

devenv Tools.sln /build "Release"
4 голосов
/ 07 февраля 2013

Я просто хочу поблагодарить Bejoy на примере. У меня были большие проблемы с перестройкой решения на этапе предварительной сборки, потому что они удалили большую часть макросов, и это мне очень помогло.

Вот мое решение на основе Bejoy (учитывая, что файл .bat находится в корневой папке установки, являющейся частью решения):

call "%VS100COMNTOOLS%\vsvars32.bat"

devenv "%CD%\..\soulutionfile.sln" /build "Release"
4 голосов
/ 11 ноября 2008

Если вы хотите увидеть точную командную строку, предоставляемую VS (а не работать с ней), вы можете попробовать заменить MSBuild.exe на ваше собственное консольное приложение, которое выводит все параметры в файл.

Вы также можете записать все переменные окружения, предоставленные для проверки того, какие VS предоставляет в фоновом режиме.

3 голосов
/ 11 ноября 2008

Вы можете запустить msbuild из командной строки. msbuild понимает файлы .sln (решения). Вы можете указать файл .sln и конфигурацию сборки (отладка, выпуск и т. Д.) Из командной строки.

http://msdn.microsoft.com/en-us/library/ms164311.aspx
Вот документация о том, что вы можете сделать с помощью msbuild. MSBuild.exe устанавливается с платформой .net, а не с Visual Studio. Вы можете найти его в c: \ windows \ microsoft.net \ framework \ v3.5 (или v2.0.50727)

Я немного искал и обнаружил, что вы также можете выполнить сборку из командной строки в Visual Studio, используя devenv.exe / build, дополнительную информацию здесь:
http://msdn.microsoft.com/en-us/library/xee0c8y7(VS.80).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...