Je configure la prise en charge de .NET 4.0 sur notre serveur CI. J’ai installé .NET 4.0 et les outils .NET à partir du SDK Windows 7.1.
Sur .NET 2.0 et 3.5, cela a juste fonctionné. Avec .NET 4, lorsque je lance l’invite “Windows SDK 7.1 Command” à partir du menu Démarrer, il se plaint
The x86 comstackrs 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
Ensuite, quand j’essaie de lancer msbuild, j’obtiens:
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>
Je ne peux pas vraiment croire que l’installation du moteur d’exécution et du SDK vous laissera un système qui ne peut pas exécuter msbuild … ai-je manqué une étape évidente ou une mise à jour de Windows obscure ou est-il temps d’abandonner et de pirater le chemin ?
Pour activer msbuild
dans l’invite de commandes , vous devez simplement append le chemin d’access à l’installation de .NET 4 Framework sur votre machine à la variable d’environnement PATH
.
Vous pouvez accéder aux variables d’environnement en:
PATH
Pour référence, mon chemin était C:\Windows\Microsoft.NET\Framework\v4.0.30319
À partir de MSBuild 12 (2013) / VS 2013 / .NET 4.5.1+ et ultérieures, MSBuild est désormais installé dans le cadre de Visual Studio .
Pour référence, avec VS2015 installé ma machine mon chemin est C:\Program Files (x86)\MSBuild\14.0\Bin
À partir de Visual Studio 2013
, MSbuild
partie de Visual Studio. Plus tôt, MSBuild était installé dans le cadre de. NET Framework.
MSBuild est installé directement sous % ProgramFiles% . Ainsi, le chemin pour MSBuild peut être différent selon la version de Visual Studio.
Pour Visual Studio 2015
, le chemin d’access de MSBuild
est "%ProgramFiles(x86)%\MSBuild\14.0\Bin\MSBuild.exe"
Pour Visual Studio 15 Preview
, le chemin d’access de MSBuild
est "%ProgramFiles(x86)%\MSBuild\15.0\Bin\MSBuild.exe"
En outre, certaines nouvelles propriétés MSBuild ont été ajoutées et d’autres ont été modifiées. Pour plus d’informations, cliquez ici
Mise à jour 1: VS 2017
L’emplacement de MSBuild a encore changé avec la publication de Visual Studio 2017 . Le répertoire d’installation se trouve maintenant sous %ProgramFiles(x86)%\Microsoft Visual Studio\2017\[VS Edition]\MSBuild\15.0\Bin\
. Depuis, j’ai une édition Enterprise, l’emplacement MSBuild pour ma machine est "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSbuild.exe"
L’utilisation de «l’invite de commande de développeur pour Visual Studio 20XX» au lieu de «cmd» définira automatiquement le chemin d’access pour msbuild sans avoir à l’append à vos variables d’environnement.
Votre dossier de chauve-souris pourrait ressembler à:
CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319 msbuild C:\Users\mmaratt\Desktop\BladeTortoise\build\ALL_BUILD.vcxproj PAUSE EXIT
Pour être capable de construire avec la syntaxe C # 6, utilisez ceci dans le chemin:
C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin
Le script SetEnv.cmd
que le raccourci ” cl.exe
commandes SDK” exécute vérifie la cl.exe
de cl.exe
à différents endroits avant de configurer les entrées à append à PATH
. Donc, il ne parvient pas à append quoi que ce soit si un compilateur C natif n’est pas installé.
Pour résoudre ce problème, appliquez le correctif suivant à
. Cela corrigera également les chemins manquants vers d’autres outils situés dans
et sous-dossiers. Bien sûr, vous pouvez installer le compilateur C plutôt que de contourner ce bogue.
--- 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 comstackrs 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 comstackrs 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 comstackrs 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 comstackrs 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 comstackrs 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 comstackrs 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 comstackrs 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 comstackrs 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 comstackrs 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 comstackrs 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 comstackrs are not currently installed. default + ECHO Please go to Add/Remove Programs to update your installation. + ECHO . + ) ) :: --------------------------------------------------------------------------------------------