Как запустить msbuild из командной строки с помощью Windows SDK 7.1?
я настраиваю поддержку .NET 4.0 на нашем сервере CI. Я установил .Net версии 4.0, а .Чистые инструменты из Windows 7.1 SDK для.
на .NET 2.0 и 3.5, это просто сработало. С .NET 4, Когда я запускаю "Windows SDK 7.1 Command Prompt" из меню Пуск, он жалуется на
The x86 compilers are not currently installed. x86-x86
Please go to Add/Remove Programs to update your installation.
.
Setting SDK environment relative to C:Program FilesMicrosoft
SDKsWindowsv7.1
.
Targeting Windows Server 2008 x86 Debug
затем, когда я пытаюсь запустить msbuild, я получаю:
C:Program FilesMicrosoft SDKsWindowsv7.1>msbuild
'msbuild' is not recognized as an internal or external command,
operable program or batch file.
C:Program FilesMicrosoft SDKsWindowsv7.1>
Я не могу поверить, что установка среды выполнения и SDK оставит вас с системой, которая не может запустить MSBuild... я пропустил какой-то очевидный шаг или неясное обновление Windows, или пришло время сдаться и начать взламывать системный путь?
6 ответов:
включить
msbuildна Командная Строка, вы просто должны добавить путь к .NET 4 Framework установить на вашем компьютере вPATHпеременные среды.вы можете получить доступ к переменным окружения с помощью:
- Правой Кнопкой Мыши на компьютер
- клик свойства
- нажмите кнопку Дополнительные параметры системы на левой панели навигации
- на следующий диалоговое окно нажмите кнопку переменные среды
- прокрутите вниз, чтобы
PATH- отредактируйте его, чтобы включить свой путь к фреймворку (не забудьте ";" после последней записи здесь).
Для справки, мой путь был
C:\Windows\Microsoft.NET\Framework\v4.0.303193/21/18 Обновление Пути:
начиная с MSBuild 12 (2013)/VS 2013 / .NET 4.5.1+ и далее MSBuild теперь устанавливается как часть Visual Studio.
для ссылка, с VS2015 установлена моя машина мой путь
C:\Program Files (x86)\MSBuild.0\Bin
С
Visual Studio 2013далееMSbuildпоставляется в составе Visual Studio. Ранее MSBuild был установлен в составе. net Framework.MSBuild устанавливается непосредственно под %ProgramFiles%. Таким образом, путь для MSBuild может отличаться в зависимости от версии Visual Studio.
на
Visual Studio 2015, путемMSBuild- это"%ProgramFiles(x86)%\MSBuild.0\Bin\MSBuild.exe"на
Visual Studio 15 Preview, путемMSBuild- это"%ProgramFiles(x86)%\MSBuild.0\Bin\MSBuild.exe"кроме того, некоторые новые MSBuild свойства были добавлены и некоторые из них были изменены. Для получения дополнительной информации смотрите здесь
обновление 1: VS 2017
расположение MSBuild снова изменилось с выпуском Visual Studio 2017. Теперь каталог установки находится под
%ProgramFiles(x86)%\Microsoft Visual Studio17\[VS Edition]\MSBuild.0\Bin\. Поскольку у меня есть Enterprise edition, расположение MSBuild для моей машины -"%ProgramFiles(x86)%\Microsoft Visual Studio17\Enterprise\MSBuild.0\Bin\MSbuild.exe"
использование "командной строки разработчика для Visual Studio 20XX "вместо" cmd " автоматически установит путь для msbuild без необходимости добавлять его в переменные среды.
ваш файл bat может быть следующим:
CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319 msbuild C:\Users\mmaratt\Desktop\BladeTortoise\build\ALL_BUILD.vcxproj PAUSE EXIT
чтобы иметь возможность строить с синтаксисом C# 6 Используйте это в пути:
C:\Program файлы (x86)\MSBuild\14.0\Bin
The
SetEnv.cmdскрипт, который запускает ярлык "командная строка SDK" проверяет наличиеcl.exeв различных местах перед настройкой записи для добавления вPATH. Поэтому он ничего не добавляет, Если собственный компилятор C не установлен.чтобы исправить это, примените следующий патч к
<SDK install dir>\Bin\SetEnv.cmd. Это также исправит отсутствующие пути к другим инструментам, расположенным в<SDK install dir>\Binи подпапки. Конечно, вы можете установить компилятор C, чтобы устранить эту ошибку.--- SetEnv.Cmd_ 2010-04-27 19:52:00.000000000 +0400 +++ SetEnv.Cmd 2013-12-02 15:05:30.834400000 +0400 @@ -228,10 +228,10 @@ IF "%CURRENT_CPU%" =="x64" ( IF "%TARGET_CPU%" == "x64" ( + SET "FxTools=%FrameworkDir64%\%FrameworkVersion%;%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework64\v3.5;%windir%\Microsoft.NET\Framework\v3.5;" + SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools\x64;%WindowsSdkDir%Bin\x64;%WindowsSdkDir%Bin;" IF EXIST "%VCTools%\amd64\cl.exe" ( SET "VCTools=%VCTools%\amd64;%VCTools%\VCPackages;" - SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools\x64;%WindowsSdkDir%Bin\x64;%WindowsSdkDir%Bin;" - SET "FxTools=%FrameworkDir64%\%FrameworkVersion%;%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework64\v3.5;%windir%\Microsoft.NET\Framework\v3.5;" ) ELSE ( SET VCTools= ECHO The x64 compilers are not currently installed. @@ -239,10 +239,10 @@ ECHO . ) ) ELSE IF "%TARGET_CPU%" == "IA64" ( + SET "FxTools=%FrameworkDir64%\%FrameworkVersion%;%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework64\v3.5;%windir%\Microsoft.NET\Framework\v3.5;" + SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools\x64;%WindowsSdkDir%Bin\x64;%WindowsSdkDir%Bin;" IF EXIST "%VCTools%\x86_ia64\cl.exe" ( SET "VCTools=%VCTools%\x86_ia64;%VCTools%\VCPackages;" - SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools\x64;%WindowsSdkDir%Bin\x64;%WindowsSdkDir%Bin;" - SET "FxTools=%FrameworkDir64%\%FrameworkVersion%;%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework64\v3.5;%windir%\Microsoft.NET\Framework\v3.5;" ) ELSE ( SET VCTools= ECHO The IA64 compilers are not currently installed. @@ -250,10 +250,10 @@ ECHO . ) ) ELSE IF "%TARGET_CPU%" == "x86" ( + SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;" + SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;" IF EXIST "%VCTools%\cl.exe" ( SET "VCTools=%VCTools%;%VCTools%\VCPackages;" - SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;" - SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;" ) ELSE ( SET VCTools= ECHO The x86 compilers are not currently installed. @@ -263,10 +263,10 @@ ) ) ELSE IF "%CURRENT_CPU%" =="IA64" ( IF "%TARGET_CPU%" == "IA64" ( + SET "FxTools=%FrameworkDir64%\%FrameworkVersion%;%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework64\v3.5;%windir%\Microsoft.NET\Framework\v3.5;" + SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools\IA64;%WindowsSdkDir%Bin\IA64;%WindowsSdkDir%Bin;" IF EXIST "%VCTools%\IA64\cl.exe" ( SET "VCTools=%VCTools%\IA64;%VCTools%;%VCTools%\VCPackages;" - SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools\IA64;%WindowsSdkDir%Bin\IA64;%WindowsSdkDir%Bin;" - SET "FxTools=%FrameworkDir64%\%FrameworkVersion%;%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework64\v3.5;%windir%\Microsoft.NET\Framework\v3.5;" ) ELSE ( SET VCTools= ECHO The IA64 compilers are not currently installed. @@ -274,10 +274,10 @@ ECHO . ) ) ELSE IF "%TARGET_CPU%" == "x64" ( + SET "FxTools=%FrameworkDir64%\%FrameworkVersion%;%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework64\v3.5;%windir%\Microsoft.NET\Framework\v3.5;" + SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools\IA64;%WindowsSdkDir%Bin\IA64;%WindowsSdkDir%Bin;" IF EXIST "%VCTools%\x86_amd64\cl.exe" ( SET "VCTools=%VCTools%\x86_amd64;%VCTools%\VCPackages;" - SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools\IA64;%WindowsSdkDir%Bin\IA64;%WindowsSdkDir%Bin;" - SET "FxTools=%FrameworkDir64%\%FrameworkVersion%;%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework64\v3.5;%windir%\Microsoft.NET\Framework\v3.5;" ) ELSE ( SET VCTools= ECHO The VC compilers are not currently installed. @@ -285,10 +285,10 @@ ECHO . ) ) ELSE IF "%TARGET_CPU%" == "x86" ( + SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;" + SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;" IF EXIST "%VCTools%\cl.exe" ( SET "VCTools=%VCTools%;%VCTools%\VCPackages;" - SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;" - SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;" ) ELSE ( SET VCTools= ECHO The x86 compilers are not currently installed. @@ -298,10 +298,10 @@ ) ) ELSE IF "%CURRENT_CPU%"=="x86" ( IF "%TARGET_CPU%" == "x64" ( + SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;" + SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;" IF EXIST "%VCTools%\x86_amd64\cl.exe" ( SET "VCTools=%VCTools%\x86_amd64;%VCTools%\VCPackages;" - SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;" - SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;" ) ELSE ( SET VCTools= ECHO The x64 cross compilers are not currently installed. @@ -309,10 +309,10 @@ ECHO . ) ) ELSE IF "%TARGET_CPU%" == "IA64" ( + SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;" + SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;" IF EXIST "%VCTools%\x86_IA64\cl.exe" ( SET "VCTools=%VCTools%\x86_IA64;%VCTools%;%VCTools%\VCPackages;" - SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;" - SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;" ) ELSE ( SET VCTools= ECHO The IA64 compilers are not currently installed. @@ -320,10 +320,10 @@ ECHO . ) ) ELSE IF "%TARGET_CPU%" == "x86" ( + SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;" + SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;" IF EXIST "%VCTools%\cl.exe" ( SET "VCTools=%VCTools%;%VCTools%\VCPackages;" - SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;" - SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;" ) ELSE ( SET VCTools= ECHO The x86 compilers are not currently installed. x86-x86 @@ -331,15 +331,17 @@ ECHO . ) ) -) ELSE IF EXIST "%VCTools%\cl.exe" ( - SET "VCTools=%VCTools%;%VCTools%\VCPackages;" - SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;" - SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;" ) ELSE ( - SET VCTools= - ECHO The x86 compilers are not currently installed. default - ECHO Please go to Add/Remove Programs to update your installation. - ECHO . + SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;" + SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;" + IF EXIST "%VCTools%\cl.exe" ( + SET "VCTools=%VCTools%;%VCTools%\VCPackages;" + ) ELSE ( + SET VCTools= + ECHO The x86 compilers are not currently installed. default + ECHO Please go to Add/Remove Programs to update your installation. + ECHO . + ) ) :: --------------------------------------------------------------------------------------------
Comments