Azure Devops 构建在 localhost 不在 .NET Core 2.2 上时抛出错误

Azure Devops build throws error where localhost does not on .NET Core 2.2

我正在更新过去 2 年 运行 稳定的网站后端。有人问我在我的本地主机上得到了 运行 的一些小更新(大约 5 行代码更新),但是我的 devops 构建管道抛出错误:

Package Microsoft.AspNetCore.Identity.EntityFrameworkCore 2.2.0 is not compatible with netcoreapp2.2 (.NETCoreApp,Version=v2.2). Package Microsoft.AspNetCore.Identity.EntityFrameworkCore 2.2.0 supports: netstandard2.0 (.NETStandard,Version=v2.0)
Package Microsoft.EntityFrameworkCore.SqlServer 2.2.4 is not compatible with netcoreapp2.2 (.NETCoreApp,Version=v2.2). Package Microsoft.EntityFrameworkCore.SqlServer 2.2.4 supports: netstandard2.0 (.NETStandard,Version=v2.0)
One or more packages are incompatible with .NETCoreApp,Version=v2.2.

考虑到我让它在我的本地主机上工作,我期待一切正常。

我不太热衷于将所有内容都更新到最新版本的 .NET,因为我真的不想像更新 5 行代码那样重写太多工作正常的代码。

抛出错误的屏幕截图:

在提交中我还看到了 storage.ide-shm 和 storage.ide-wal 的变化。

看起来失败是因为在我的构建过程中 NuGet 包还原,这是由 yml 中的任务触发的。我正在构建项目的 yml 文件:

# ASP.NET Core
# Build and test ASP.NET Core projects targeting .NET Core.
# Add steps that run tests, create a NuGet package, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core

name: $(Build.SourceBranchName)_$(Date:yyyyMMdd)$(Rev:.r)

trigger:
- master

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/myprojectname.API.csproj'
  buildConfiguration: 'Release'

steps:
- task: UseDotNet@2
  displayName: 'Use .NET Core sdk'
  inputs:
    packageType: sdk
    version: 2.2.203
    installationPath: $(Agent.ToolsDirectory)/dotnet
    
    
- task: NuGetCommand@2
  inputs:
    command: 'restore'
    restoreSolution: '**/*.sln'
    feedsToUse: 'select'
    
- script: dotnet restore
- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    clean: true
- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: drop'
  inputs:
    PathtoPublish: '$(build.artifactstagingdirectory)' 

如何在不升级到最新版本的 .NET 的情况下使构建再次运行。

Azure Devops build throws error where localhost does not on .NET Core 2.2

过时版本的 nuget 可能会发生此错误。具体来说,4.0.0 出现了这个问题。

要解决此问题,您可以尝试添加 nuget 版本安装程序任务,您可以 运行 作为构建步骤的一部分来升级构建管道中的 nuget 运行ning 版本:

- task: NuGetToolInstaller@1
  displayName: 'Use NuGet 6.1.0'
  inputs:
    versionSpec: 6.1.0
    checkLatest: true

注意:在任务 nuget restore 任务之前添加此任务。