Я настраиваю поддержку .NET 4.0 на нашем сервере CI. Я установил .NET 4.0 и инструменты .NET из 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 Files\Microsoft
SDKs\Windows\v7.1
\.
Targeting Windows Server 2008 x86 Debug
Затем, когда я пытаюсь запустить msbuild, я получаю:
C:\Program Files\Microsoft SDKs\Windows\v7.1>msbuild
'msbuild' is not recognized as an internal or external command,
operable program or batch file.
C:\Program Files\Microsoft SDKs\Windows\v7.1>
Я не могу поверить, что установка среды выполнения и SDK оставит вас с системой, которая не может запускать msbuild ... пропустил ли я какой-то очевидный шаг или неясен Центр обновления Windows, или пора сдаться и начать взламывать системный путь ?
%VCTools%
установлено для переменной среды? Он должен быть установлен на путь. Есть лиcl.exe
на этом пути? Кроме того, вы используете неанглийскую Windows? Я слышал несколько сообщений об этой проблеме при локализованной установке Windows.Ответы:
Чтобы включить
msbuild
в командной строке , вам просто нужно добавить каталогmsbuild.exe
установки на вашем компьютере вPATH
переменную среды.Вы можете получить доступ к переменным среды:
PATH
Для справки, мой путь был
C:\Windows\Microsoft.NET\Framework\v4.0.30319
Обновления пути:
Начиная с MSBuild 12 (2013) / VS 2013 / .NET 4.5.1+ и более поздних версий MSBuild теперь устанавливается как часть Visual Studio .
Для VS2015 путь был
%ProgramFiles(x86)%\MSBuild\14.0\Bin
Для VS2017 путь был
%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin
Для VS2019 путь был
%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin
источник
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin
. См. Docs.microsoft.com/en-us/visualstudio/msbuild/…С этого
Visual Studio 2013
момента онMSbuild
входит в состав Visual Studio. Ранее MSBuild устанавливался как часть. NET Framework.MSBuild устанавливается непосредственно в % ProgramFiles% . Таким образом, путь к MSBuild может отличаться в зависимости от версии Visual Studio.
Потому что
Visual Studio 2015
ПутьMSBuild
есть"%ProgramFiles(x86)%\MSBuild\14.0\Bin\MSBuild.exe"
Потому что
Visual Studio 15 Preview
ПутьMSBuild
есть"%ProgramFiles(x86)%\MSBuild\15.0\Bin\MSBuild.exe"
Кроме того, были добавлены некоторые новые свойства MSBuild, а некоторые изменены. Для получения дополнительной информации смотрите здесь
Обновление 1: VS 2017
Расположение MSBuild снова изменилось с выпуском Visual Studio 2017 . Теперь каталог установки находится в папке
%ProgramFiles(x86)%\Microsoft Visual Studio\2017\[VS Edition]\MSBuild\15.0\Bin\
. Поскольку у меня выпуск Enterprise, расположение MSBuild для моей машины"%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSbuild.exe"
источник
Использование «командной строки разработчика для Visual Studio 20XX» вместо «cmd» автоматически установит путь для msbuild без необходимости добавлять его в переменные среды.
источник
Ваш файл bat может быть таким:
источник
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild *.*proj
может сделать это, хотя обратите внимание, что путь для более новых версий MSBuild (около 2013 года) отличается.Для Visual Studio 2019 (по крайней мере, Preview) он сейчас находится в:
Я полагаю, что процесс будет аналогичным для официального выпуска 2019 года.
источник
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\MsBuild.exe
.Чтобы иметь возможность строить с синтаксисом C # 6, используйте это в пути:
источник
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 . + ) ) :: --------------------------------------------------------------------------------------------
источник