【问题标题】:Missing multiple MSBuild .target files on build server构建服务器上缺少多个 MSBuild .target 文件
【发布时间】:2020-12-30 14:09:02
【问题描述】:

我们在 Azure 中使用本地构建服务器(32 位 Windows 7;注意:不能更新机器)。服务器自动将其 VS 2017 版本更新为 15.9.30。在此更新之后,我们的大多数构建现在都失败了。错误消息有所不同,但它们都有类似的模式,似乎与 MSBuild 和/或 NuGet 相关。例如:

  • 错误 MSB4019:找不到导入的项目“C:\Program Files\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn\Microsoft.CSharp.Core.targets”
  • 错误 MSB4036:找不到“GetReferenceNearestTargetFrameworkTask”任务
  • 错误 MSB6003:无法运行指定的任务可执行文件“csc.exe”。无法加载文件或程序集“Microsoft.CodeAnalysis.CSharp, Version=1.3.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或其依赖项之一

尝试的修复:

  • 在更新之前构建工作正常
  • 已确认问题文件实际​​上已丢失。在某些情况下,错误消息中提到的部分路径在构建服务器上不存在
  • 虽然这似乎是解决问题的错误方法,但我们将丢失的文件复制到构建服务器上的适当位置。这似乎修复了一些错误的引用,但即使提供了正确的文件,一些错误仍然存​​在
  • 确认通过VS安装了“Nuget包管理器”和“Nuget目标和构建任务”组件
  • 使用“工具 | 清除 NuGet 缓存” VS 中的 Options...' 菜单项

目前没有想法。欢迎任何建议/见解。 TIA。

【问题讨论】:

    标签: visual-studio azure-devops msbuild


    【解决方案1】:

    错误 MSB4019

    如果您使用 MSBuild 命令行构建项目,则应在命令行中指定参数/p:VisualStudioVersion=15.0,例如:

    msbuild.exe <project or solution to build> /p:VisualStudioVersion=15.0
    

    查看this thread 了解更多详情。

    如果使用 Visual Studio 2017 构建,可以覆盖的值

    $(VCTargetsPath):
    
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\
    

    您可以查看ticket 了解更多详情。

    错误 MSB4036

    您似乎正在使用自托管代理,您可能需要更新您的 MSBUILD 工具组件。请参考此blog 更新工具。

    【讨论】:

    • 另外,也请尝试在本地运行项目并在此分享结果。谢谢
    • 很遗憾,上面的链接对我们没有太大帮助。构建服务器安装了 VS 2017、MSBuild 工具/目标和 Nuget 管理器。如果管道中失败的解决方案被加载到构建服务器的 VS 版本中,则可以毫无问题地构建该解决方案。如果构建管道创建的 MSBuild 命令在构建服务器上的 VS 命令窗口中运行,则该命令将失败并出现上述相同的错误。我已经确认 MSBuild 命令确实包含您提到的“/p:VisualStudioVersion=15.0”开关。如果可能的话,我认为需要重新安装 MSBuild。
    猜你喜欢
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    相关资源
    最近更新 更多