问题描述
|
我正在CI服务器上设置.NET 4.0支持。我已经安装了.NET 4.0和Windows 7.1 SDK中的.NET工具。
在.NET 2.0和3.5上,它可以正常工作。使用.NET 4,当我从“开始”菜单运行“ Windows SDK 7.1命令提示符”时,它抱怨
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 Update晦涩难懂,或者是时候该放弃并开始黑客了系统路径?
解决方法
要在命令提示符中启用“ 2”,只需将计算机上安装的.NET 4 Framework的路径添加到“ 3”环境变量。
您可以通过以下方式访问环境变量:
右键单击计算机
单击属性
然后单击左侧导航栏上的“高级系统设置”
在下一个对话框中,单击“环境变量”。
向下滚动至
PATH
编辑它以包括您到框架的路径(不要忘记这里的最后一个条目之后的\“; \”)。
供参考,我的路径是C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319
18/3/21路径更新:
从MSBuild 12(2013)/ VS 2013 / .NET 4.5.1+起,MSBuild现在作为Visual Studio的一部分安装。
作为参考,在安装了VS2015的机器上,我的路径是C:\\Program Files (x86)\\MSBuild\\14.0\\Bin
, 从ѭ7开始,ѭ8是Visual Studio的一部分。早先,MSBuild已作为其一部分安装。 NET框架。
MSBuild直接安装在%ProgramFiles%下。因此,MSBuild的路径可能会有所不同,具体取决于Visual Studio的版本。
对于Visual Studio 2015
,Path10ѭ的路径是\"%ProgramFiles(x86)%\\MSBuild\\14.0\\Bin\\MSBuild.exe\"
对于Visual Studio 15 Preview
,Path10ѭ的路径是\"%ProgramFiles(x86)%\\MSBuild\\15.0\\Bin\\MSBuild.exe\"
此外,还添加了一些新的MSBuild属性,并对其进行了一些修改。
欲了解更多信息,请点击这里
更新1:VS 2017
随着Visual Studio 2017的发布,MSBuild的位置再次更改。现在安装目录位于ѭ15下。由于我拥有企业版,因此我的计算机的MSBuild位置为\"%ProgramFiles(x86)%\\Microsoft Visual Studio\\2017\\Enterprise\\MSBuild\\15.0\\Bin\\MSbuild.exe\"
, 使用“ Visual Studio 20XX开发人员命令提示符”代替“ cmd”,将自动设置msbuild的路径,而不必将其添加到环境变量中。
, 您的蝙蝠文件可能像:
CD C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319
msbuild C:\\Users\\mmaratt\\Desktop\\BladeTortoise\\build\\ALL_BUILD.vcxproj
PAUSE
EXIT
, 为了能够使用C#6语法进行构建,请在路径中使用以下命令:
C:\\程序文件(x86)\\ MSBuild \\ 14.0 \\ Bin
, 对于Visual Studio 2019(至少是预览版),它现在位于:
C:\\ Program Files(x86)\\ Microsoft Visual Studio \\ 2019 \\ Preview \\ MSBuild \\ Current \\ Bin \\ MSBuild.exe
我想这个过程对于2019年的正式发布将是相似的。
, “ SDK命令提示符”快捷方式运行的SetEnv.cmd
脚本在设置要添加到PATH
的条目之前,会在各个位置检查cl.exe
。因此,如果未安装本机C编译器,它将无法添加任何内容。
要解决此问题,请将以下补丁应用于ѭ21the。这也将修复missing22ѭ和子文件夹中其他工具的缺少路径。当然,您可以安装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 .
+ )
)
:: --------------------------------------------------------------------------------------------