为什么看的MSBuild在C:\\的Microsoft.Cpp.Default.props而不是C

2019-08-31 12:41发布

当我运行的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.
  • 位于的MSBuild C:\程序文件(x86)的\的MSBuild
  • HKLM \ SOFTWARE \ Wow6432Node \微软\的MSBuild \ ToolVersions \ V4.0 VCTargetsPath设置为$(MSBuildExtensionsPath32)\ Microsoft.Cpp \ V4.0 \
  • 运行的MSBuild /冗长时:诊断为好系统显示MSBuildExtensionsPath32,MSBuildExtensionsPath64,MSBuildExtensionsPath设置环境在构建开始
  • 设置MSBuildExtensionsPath32,MSBuildExtensionsPath64,MSBuildExtensionsPath设置为shell环境变量不会导致它们显示为环境在构建开始

尝试修复

  • 卸载.NET 4.5,修复.NET 4.0
  • 在系统变量设置MSBuildExtensionsPath32,MSBuildExtensionsPath64,MSBuildExtensionsPath。

看来,MSBuildExtensionsPath32没有被正确设置和设置MSBuildExtensionsPath没有帮助

SET MSBuildExtensionsPath="C:\Program Files\MSBuild"

请告知,如果你有什么阻止该变量的正确设置任何想法我知道。

Answer 1:

发布使用他们的命令行工具,它调用的MSBuild是Cocos2d-X的应用程序时,我得到了这个问题。 我使用的是Win 7的64位,VS2013快递,cocos2d的-X 3.3版本,安装了.NET Framework 4.5。

我通过运行cocos.py发布命令之前设置以下固定的问题:

SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120


Answer 2:

对于那些谁没有按照MS禁止令(见十五的答案 ),你仍然可以解决这个问题。

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



Answer 3:

最近我有同样的问题,在不同的顺序安装不同的包装后,这是刚开始很凌乱。 然后我发现这个回购- https://github.com/felixrieseberg/windows-build-tools

npm install --global windows-build-tools

它安装的Python和VS生成所必需的编译大多数节点模块的工具。 它的工作一种享受!



Answer 4:

安装微软的Visual C ++ 2010 Service Pack 1的编译器更新为Windows SDK 7.1固定的MSB4019错误,我是Windows7的上获得64楼。

该更新的自述文件指出,建议的顺序是

  1. Visual Studio 2010中
  2. Windows SDK的7.1
  3. 的Visual Studio 2010 SP1
  4. VISUAL C ++ 2010 SP1编译器更新为Windows SDK 7.1


Answer 5:

在64位的系统,MSBuild的默认为以下性质(其中C:是系统驱动):

MSBuildExtensionsPath = C:\Program Files (x86)\MSBuild
MSBuildExtensionsPath32 = C:\Program Files (x86)\MSBuild
MSBuildExtensionsPath64 = C:\Program Files\MSBuild

如果不是这样,它意味着你要么有一些自定义的第三方将覆盖安装目标,或者你的MSBuild安装已损坏。

您可以尝试:

  • 修复安装.NET
  • 应用最新的Visual Studio服务包
  • 设置MSBuildExtensionsPath如上手动(注意x86在64位机器上的部分)


Answer 6:

我对Visual Studio的2015年版的这个问题。 当我使用的cmake生成一个项目这个错误出现。

错误MSB4019:导入项目“d:\ Microsoft.Cpp.Default.props”未找到

我通过添加一个字符串固定它

VCTargetsPath

与价值

$(MSBuildExtensionsPath32)\ Microsoft.Cpp \ V4.0 \ V140

在注册表路径

HKLM \ SOFTWARE \微软\的MSBuild \ ToolsVersions \ 14.0



Answer 7:

在的MSBuild一个独立的构建工具,经常与其他工具捆绑在一起。 它可能已被安装到您的计算机。NET(旧版本),Visual Studio的(或更新版本),甚至是团队基础建立在。

MSBuild的需要配置文件,编译器等(工具箱)是Visual Studio或TFS将使用它的版本,以及.NET版本针对其源代码将被编译匹配。

根据安装方式的MSBuild,配置文件可以在一个或多个这样的路径。

  • C:\ Program Files文件(x86)的\的MSBuild \ Microsoft.Cpp \ V4.0 \
  • C:\ Program Files文件(x86)的\的MSBuild \ Microsoft.Cpp \ V4.0 \ V120 \
  • C:\ Program Files文件(x86)的\的MSBuild \ Microsoft.Cpp \ V4.0 \ V140 \

在其他的答案,注册表项和/或环境变量点必须到工具集路径描述。

  • 在HKLM \ SOFTWARE \ Microsoft提供的VCTargetsPath键\的MSBuild \ ToolsVersions \ 4.0
  • 该VCTargetsPath环境变量。

偶尔,如安装工具的操作将离开设置不正确的注册表和/或环境变量。 其他答案都在修复它们的所有变化。

我要补充一点的是环境变量并没有为我工作,当我离开尾随\



Answer 8:

没有别的工作对我来说只是,设置路径为:

C:\Program Files\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0


Answer 9:

对于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\\'))"


Answer 10:

安装微软的Visual C ++ 2010 Service Pack 1的编译器更新为Windows SDK 7.1为我工作。 但是,我遇到的问题与更新,因为我已经有了VS 2010和VS 2010 SP1安装。 正如提到Xv的上方,Readme.htm文件包含了“已知问题”一节中最常见的安装问题的解决方案。 我会遵循的readme.htm的指示,每个故障排除尝试后重新启动机器,因为有些安装写入注册表。



Answer 11:

对于Windows 10的Visual Studio 2017年和2019

很多问题的答案这里适用于较旧版本的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年的社区版。

此外,确保在您的环境变量,你的MSBuild的路径,如果你使用Visual Studio 2017年社区版本指向的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


Answer 12:

我碰到这个错误决定通过编写一个构建脚本后,将通过C递归地挖掘放的MSBuild在%PATH%:\ WINDOWS \ Microsoft.NET任何发现MSBuild.exe文件的文件夹。 最后发现严重的是这是把路径上的目录。 由于dir命令将打Framework64后的文件夹Framework我得到了64位MSBuilds把我的路径之一。 我试图建立一个Visual Studio 2010解决方案和清盘从改变我的搜索字符串C:\Windows\Microsoft.NETC:\Windows\Microsoft.NET\Framework ,这样我会风与32位MSBuild.exe。 现在我的解决方案文件的基础之上。



Answer 13:

我只是说VCTargetsPath={c:\...}作为一个环境变量来我哈德森工作。



Answer 14:

根据记录,该文件Microsoft.Cpp.Default.props可以修改的环境变量VCTargetsPath ,使该变种的后续用法不正确。 我有这个问题,并通过设置解决了它VCTargetsPath10VCTargetsPath11比相同的值VCTargetsPath

这要根据你所使用的版本VS进行调整。



Answer 15:

我在VS2017环境中看到了这个。 我的构建脚本调用VsDevCmd.bat第一,而要解决这个问题,我设置VCTargetsPath环境变量之后VsDevCmd和调用的MSBuild之前:

set VCTargetsPath=%VCIDEInstallDir%VCTargets


Answer 16:

这是由于安装的MSBuild工具集和注册表设置不匹配。 如果你做一个或多个以下的它可以发生:

  • 以错误的顺序安装多个Visual Studio的版本
  • 卸载Visual Studio中的一个或多个版本
  • 手动进行注册表更改或修改Visual Studio安装

唯一安全可靠的解决方案是重新安装操作系统。 如果你的项目需要的Visual Studio构建的多个版本, 首先安装旧版本 。 然后修复您的代码,以便您可以使用一个单一的工具来构建它,或者你或你的同事会在同一混乱很快再次。

如果这不是一个选择,第一次读到https://stackoverflow.com/a/41786593/2279059以便更好地理解问题和各种“解决方案”,实际上做什么。 然后,根据您的Visual Studio版本和安装,其他的答案或它们的变化可能最终帮助之一。

一些更多的提示:

  • 试试这个答案: https://stackoverflow.com/a/38503503/2279059


文章来源: Why does MSBuild look in C:\\ for Microsoft.Cpp.Default.props instead of c:\\Program Files (x86)\\MSBuild? ( error MSB4019)
标签: msbuild