【问题标题】:VS 2017 Build Tools failing with Error MSB4019: The imported project "D:\Microsoft.Cpp.Default.props" was not foundVS 2017 构建工具失败并出现错误 MSB4019:未找到导入的项目“D:\Microsoft.Cpp.Default.props”
【发布时间】:2018-11-02 23:27:35
【问题描述】:

我正在构建一个新的 TFS 构建服务器,并决定使用 VS 2017 构建工具而不是安装 VS 的完整版本。当我尝试构建我们的 C++ 项目时,它会抛出以下错误:

Error MSB4019: The imported project "D:\Microsoft.Cpp.Default.props" was not found.

经过数小时的研究,我离解决这个问题还差得远。我尝试添加以下注册表设置,但没有帮助。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V140\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V110\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V140\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\11.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V110\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V110\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V140\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V110\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V140\'))"

我猜这个产品的微软安装程序坏了。是否有针对此错误的标准修复程序,或者我应该放弃我的努力并简单地安装完整版本?

在项目文件中,我找到了这个条目:

<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

所以,我猜这意味着变量 VSTargetsPath 以某种方式指向 D: 驱动器的根目录,但我不知道该值的设置位置。我们当前的构建服务器没有名为 VSTargetsPath 的环境变量集,但它确实缺少注册表项。它还安装了完整版的 VS。

【问题讨论】:

  • “我猜微软的安装程序在这个产品上是坏的”——不是一般的。我成功使用了。
  • 我已经尝试卸载/重新安装和修复。不用找了。我错过了安装一个重要功能吗?
  • 不知道。它对我来说开箱即用。
  • 您能分享您选择了哪些选项以及您使用的 VS 版本吗?工具集版本也可能有所帮助。
  • 最新的 msvc 15.7 。实际上不是在本地使用它(使用 Linux),而是安装在我们的 Windows 构建服务器上。

标签: c++ visual-studio msbuild tfsbuild


【解决方案1】:

VS 2017 构建工具失败并出现错误 MSB4019:找不到导入的项目“D:\Microsoft.Cpp.Default.props”

尝试将 VCTargetsPath 作为属性从您的构建配置显式传递给 msbuild:

  1. 编辑构建的构建定义。

  2. 单击进程选项卡。

  3. 在“高级”部分中,设置 MSBuild Arguments 以包含以下属性:

    /p:VCTargetsPath="C:\Program Files (x86)\Microsoft Visual Studio\2017\xxx\Common7\IDE\VC\VCTargets\"

  4. 保存构建定义。

注意:您应该将VCTargetsPath 的值更改为VCTargets 文件夹的位置。

或者VisualStudioVersion作为属性传递给msbuild:/p:VisualStudioVersion=15.0

如果您对$(VCTargetsPath) 的值感兴趣,可以查看以下线程以获取更多详细信息:

Can't find registry entries for Visual Studio 2017

Visual Studio Locator

多年来,可以使用注册表项发现 Visual Studio, 但是随着最近对部署和可扩展性模型的更改 需要新方法来发现可能不止一次安装 实例。这些更改有助于更小、更快的默认安装 通过按需安装其他工作负载和组件来补充。

vswhere 被设计为可再发行的单文件可执行文件 可用于构建或部署脚本以查找 Visual Studio - 或 Visual Studio 系列中的其他产品 - 位于。 例如,如果您知道 MSBuild 的相对路径,您可以找到 Visual Studio 的根安装并结合路径来查找 你需要什么。

您可以根据您的信息发出不同格式的信息 脚本可以使用,包括纯文本、JSON 和 XML。拉 也可以接受其他常见格式的请求。

vswhere 自 Visual Studio 2017 起包含在安装程序中 版本 15.2 及更高版本,可在以下位置找到: %ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-03
    • 2019-12-15
    • 2021-08-19
    • 2013-09-17
    • 2013-11-12
    • 2015-02-07
    • 2021-11-15
    • 1970-01-01
    相关资源
    最近更新 更多