当我运行msbuild来构建一个vc2010项目时,我收到以下错误:
error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found.
Confirm that the path in the <Import> declaration is correct, and that the file exists
on disk.
修复已尝试
似乎没有正确设置MSBuildExtensionsPath32并且设置MSBuildExtensionsPath没有帮助
SET MSBuildExtensionsPath="C:\Program Files\MSBuild"
如果您有任何想法阻止正确设置此变量,请告诉我。
我在使用命令行工具发布cocos2d-x应用程序时遇到此问题,该工具调用MSBuild。我使用的是Win 7 64位,VS2013 express,cocos2d-x 3.3版,安装了.NET Framework 4.5。
我在运行cocos.py publish命令之前通过设置以下内容来修复此问题:
SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120
MSBuild密钥的注册表项对我来说很好。重要的是要记住,必须为64位或32位分支完成,具体取决于您运行的MSBuild版本。我不建议使用环境变量,因为它可能会导致不同版本的MSBuild出现问题。
此注册表文件修复了以下两种情况:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\10.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\11.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\12.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\10.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\11.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\12.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
安装 Microsoft Visual C++ 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1为我工作。但是,我遇到了更新问题,因为我已经安装了VS 2010和VS 2010 SP1。如上面的 Xv所述,readme.htm文件包含“已知问题”部分中最常见安装问题的解决方案。我会按照readme.htm中的说明操作,并在每次故障排除尝试后重新启动计算机,因为有些安装会写入您的注册表。
我通过编写一个Build脚本来解决这个错误,该脚本会在递归浏览任何找到的MSBuild.exe文件的C:\ Windows \ Microsoft.NET文件夹之后将MSBuild放在%PATH%上。最后发现的命中是放在路径上的目录。由于dir
命令会在Framework64
之后命中Framework
文件夹,因此我得到了64位MSBuild之一。我正在尝试构建一个Visual Studio 2010解决方案,并将我的搜索字符串从C:\Windows\Microsoft.NET
更改为C:\Windows\Microsoft.NET\Framework
,这样我就可以使用32位MSBuild.exe了。现在我的解决方案文件构建
我刚刚将VCTargetsPath={c:\...}
添加为我的Hudson工作的环境变量。
为了记录,文件Microsoft.Cpp.Default.props
可以修改env var VCTargetsPath
并使该var的后续用法不正确。我有这个问题并通过将VCTargetsPath10
和VCTargetsPath11
设置为与VCTargetsPath
相同的值来解决它。
这应该根据您使用的VS版本进行调整。
我在VS2017环境中看到了这一点。我的构建脚本首先调用VsDevCmd.bat
,为了解决这个问题,我在VCTargetsPath
之后和调用MSBuild之前设置了VsDevCmd
环境变量:
set VCTargetsPath=%VCIDEInstallDir%VCTargets
这是由于安装的MSBuild工具集和注册表设置不匹配。如果您执行以下一项或多项操作,可能会发生以下情况:
唯一安全可靠的解决方案是重新安装操作系统。如果您的项目需要构建多个版本的Visual Studio,请先安装最旧版本。然后修复你的代码,这样你就可以用一个工具来构建它,或者你或你的同事很快就会再次陷入困境。
如果这不是您的选择,请首先阅读https://stackoverflow.com/a/41786593/2279059以更好地了解问题以及各种“解决方案”实际执行的操作。然后,根据您的Visual Studio版本和设置,其中一个其他答案或变体可能最终有所帮助。
一些提示:
对于那些没有遵守MS禁止命令的人(请参阅Xv's answer),您仍然可以解决问题。
MSBuild使用VCTargetsPath
来定位默认的cpp属性,但不能,因为注册表缺少此字符串值。
检查字符串值
HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
VCTargetsPath
键。值应=“$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
”修理
HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
VCTargetsPath
$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
”注意:HKLM
代表HKEY_LOCAL_MACHINE
。
我最近遇到了同样的问题,在以不同的顺序安装不同的软件包后,它变得非常混乱。然后我发现了这个回购 - https://github.com/felixrieseberg/windows-build-tools
npm install --global windows-build-tools
它安装了编译大多数节点模块所需的Python和VS Build工具。这是一种享受!
安装Microsoft Visual C++ 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1修复了我在Windows7 x64上构建的MSB4019
错误。
该更新的自述文件指出建议的顺序是
在64位系统上,MSBuild默认使用以下属性(其中C:是SystemDrive):
MSBuildExtensionsPath = C:\Program Files (x86)\MSBuild
MSBuildExtensionsPath32 = C:\Program Files (x86)\MSBuild
MSBuildExtensionsPath64 = C:\Program Files\MSBuild
如果没有,则表示您安装了某些自定义第三方覆盖目标,或者您的MSBuild安装已损坏。
要尝试的事情:
MSBuildExtensionsPath
(注意64位机器上的x86
部分)这里的许多答案适用于旧版本的Visual Studio。如果使用Visual Studio 2017社区版本,对我有用的是设置一个名为VCTargetsPath
的环境变量,并为其赋值
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets
如果使用Visual Studio 2019社区版,
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160
这里的其他答案将此变量设置为c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140
但我注意到在我的visual studio安装中,我的MSBuild文件夹中没有名为Microsoft.Cpp的文件夹。因此请记住这一点,以及上面的路径是针对Visual Studio 2017的社区版本的事实。
此外,如果您使用的是Visual Studio 2017社区版,请确保环境变量中的MSBuild路径指向正确版本的MSBuild,
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin
如果您使用的是Visual Studio 2019社区版,
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin
我在Visual Studio 2015版上遇到了这个问题。当我使用cmake生成项目时出现了这个错误。
错误MSB4019:找不到导入的项目“D:\ Microsoft.Cpp.Default.props”
我通过添加一个字符串来修复它
VCTargetsPath
有价值的
(Mbuildelenthosphonate32)Yamorosorphic Acid Excipient.0B140
在注册表路径中
HKLM \ SOFTWARE \微软\的MSBuild \ ToolsVersions \ 14.0
MSBuild是一个独立的构建工具,经常与其他工具捆绑在一起。它可能已安装在您的计算机上,包含.NET(旧版本),Visual Studio(较新版本)甚至Team Foundation Build。
MSBuild需要与将使用它的Visual Studio或TFS版本匹配的配置文件,编译器等(ToolSet),以及将编译源代码的.NET版本。
根据MSBuild的安装方式,配置文件可能位于这些路径中的一个或多个路径中。
如其他答案中所述,注册表项和/或环境变量点必须到ToolSet路径。
有时,安装工具之类的操作会使注册表和/或环境变量设置错误。其他答案都是修复它们的变化。
我唯一需要补充的是环境变量对我来说不起作用,当我离开尾随\
除了将路径设置为:
C:\Program Files\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0