DevOps CI 管道声明失败 Microsoft.Bcl.Build

DevOps CI pipe is failing claiming Microsoft.Bcl.Build

我有一个从 public 和私有 NuGet 存储库中提取的项目。这行得通。但似乎不起作用的是 CI 上的构建由于 Microsoft.Bcl.Build 而失败,它应该从 Nuget Restore Step

下载
trigger:
- master

pool:
  vmImage: 'windows-2019'
  demands:
  - msbuild
  - visualstudio
  - VSTest
  - DotNetFramework

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@0
  displayName: 'Use NuGet 4.4.1'
  inputs:
    versionSpec: 4.4.1

- task: NuGetCommand@2
  displayName: 'NuGet restore'
  inputs:
    restoreSolution: '$(Parameters.solution)'
    feedsToUse: config
    nugetConfigPath: .nuget/NuGet.Config

- task: VSBuild@1
  displayName: 'Run Build on solution.'
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)" /p:BclBuildImported=Ignore'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    logFileVerbosity: 'diagnostic'

在上面的示例中,我尝试使用和删除 /p:BclBuildImported=Ignore'

我正在使用的库中有 BCL ref,所以我无法删除该依赖项。当我将它切换到核心时,这段代码就崩溃了。

当我在 Visual Studio 2019 Ent 和 Pro 中构建它时,一切正常,只是拒绝在 Hosted 2017 平台上构建 MS DevOps。

已尝试修复,comment/discussion 自初始 post 后跟进:

  1. 已尝试多个池,均失败。
  2. 这确实在 VS 2017 和 2019 中构建在各种桌面的专业版和企业版中。
  3. 错误是 This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is ..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets.,即使正在安装所有包,而且 Nuget 下载没有显示错误或跳过。
  4. 以下修复无效:
    1. What does the Microsoft.Bcl.Build NuGet package do?

您是否在 Hosted 2019 平台上尝试过 MS DevOps,而不是使用 2017 Host?

Hosted Windows 2019 with VS2019

我最终删除了所有 BCL 依赖项并构建了许多变通方法。这不是一个小变化。不幸的是,因为这是 2 年前的事,我不知道我当时所做的细节。