为什么MSBuild在C:\for Microsoft.Cpp.Default.props中查找,而不是在C:\Program Files(x86)\MSBuild中查找?(错误MSB4019)

为什么MSBuild在C:\for Microsoft.Cpp.Default.props中查找,而不是在C:\Program Files(x86)\MSBuild中查找?(错误MSB4019),msbuild,Msbuild,运行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. 如果您知道是什么阻止了此变量的正确设置,请告诉我。在64位系统上

运行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.

如果您知道是什么阻止了此变量的正确设置,请告诉我。

在64位系统上,MSBuild默认为以下属性(其中C:是SystemDrive):

如果未安装,则表示您安装了一些自定义第三方覆盖目标,或者您的MSBuild安装已损坏

尝试的事项:

  • 修复.NET安装
  • 应用最新的Visual Studio Service Pack
  • 如上所述手动设置
    MSBuildExtensionPath
    (注意64位机器上的
    x86
    部分)
安装修复了我在Windows7 x64上生成的
MSB4019
错误

该更新的自述声明建议的顺序为

  • VisualStudio2010
  • Windows SDK 7.1
  • VisualStudio2010SP1
  • Windows SDK 7.1
  • 的Visual C++ 2010 SP1编译器更新
    对于那些没有遵守MS禁令的人(请参阅),您仍然可以解决问题

    MSBuild使用
    VCTargetsPath
    定位默认cpp属性,但无法定位,因为注册表缺少此字符串值

    检查字符串值

    • 启动regedit
    • 导航至
      HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
    • 检查
      VCTargetsPath
      键。该值应=“
      $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
    修复

    • 启动regedit Navigator至
      HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
    • 添加字符串值
      VCTargetsPath
    • 将值设置为“
      $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
    注:
    HKLM
    代表
    HKEY\u LOCAL\u机器

    为我安装。但是,我遇到了更新问题,因为我已经安装了VS2010和VS2010SP1。如
    上面,readme.htm文件包含“已知问题”部分中最常见安装问题的解决方案。我会按照readme.htm中的说明进行操作,并在每次故障排除尝试后重新启动您的计算机,因为某些安装会写入您的注册表。

    我在使用调用MSBuild的命令行工具发布cocos2d-x应用程序时遇到此问题。我使用的是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
    

    遇到此错误时,我编写了一个生成脚本,在递归地挖掘C:\Windows\Microsoft.NET文件夹中找到的任何MSBuild.exe文件后,该脚本会将MSBuild放在%PATH%上。最后找到的命中是放置在路径上的目录。由于
    dir
    命令会在
    Framework
    之后命中
    Framework64
    文件夹,因此我在路径上得到一个64位的MSBuild。我试图构建Visual Studio 2010解决方案,结果将搜索字符串从
    C:\Windows\Microsoft.NET
    更改为
    C:\Windows\Microsoft.NET\Framework
    ,这样我将得到一个32位的MSBuild.exe。现在,我的解决方案文件已生成。

    我刚刚将
    VCTargetsPath={c:\…}
    作为环境变量添加到我的Hudson作业中。

    我最近遇到了同样的问题,在以不同的顺序安装不同的包之后,它变得非常混乱。那么我找到了这份回购协议-

    npm安装--全局windows构建工具


    它安装编译大多数节点模块所需的Python&VS构建工具。真是太棒了

    MSBuild是一个独立的生成工具,经常与其他工具捆绑在一起。它可能已经在.NET(旧版本)、VisualStudio(更新版本)、甚至Team Foundation Bug中安装在您的计算机上。p> MSBuild需要与将使用它的Visual Studio或TFS版本以及编译源代码所依据的.NET版本相匹配的配置文件、编译器等(工具集)

    根据MSBuild的安装方式,配置文件可能位于其中一个或多个路径中

    • C:\ProgramFiles(x86)\MSBuild\Microsoft.Cpp\v4.0\
    • C:\ProgramFiles(x86)\MSBuild\Microsoft.Cpp\v4.0\V120\
    • C:\ProgramFiles(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\
    如其他答案中所述,注册表项和/或环境变量必须指向工具集路径

    • VCTargetsPath键处于 HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
    • VCTargetsPath环境变量
    有时,安装工具之类的操作会使注册表和/或环境变量设置不正确。其他答案都是关于修复它们的变体


    我要添加的唯一一件事是环境变量对我不起作用。当我为记录保留尾随\

    时,文件
    Microsoft.Cpp.Default.props
    可以修改环境变量
    VCTargetsPath
    ,并使该变量的后续用法不正确。 我遇到了这个问题,通过将
    VCTargetsPath10
    VCTargetsPath11
    设置为与
    VCTargetsPath
    相同的值,解决了这个问题


    这应该根据您使用的VS版本进行调整。

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

    set VCTargetsPath=%VCIDEInstallDir%VCTargets
    

    我在Visual Studio 2015版上遇到了这个问题。当我使用cmake生成项目时,出现了这个错误

    错误MSB4019:导入的项目“D:\Microsoft.Cpp.Defaul”
    SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120
    
    set VCTargetsPath=%VCIDEInstallDir%VCTargets
    
    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\\'))"
    
    C:\Program Files\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0
    
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets
    
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160
    
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin
    
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin
    
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\
    
    SET VCTargetsPath=$(VCTargetsPath)
    
    set VCTargetsPath=
    call %ProgramFiles(x86)%/Microsoft Visual Studio/2019/Professional/MSBuild/Current/Bin\msbuild.exe ...