Azure DevOps 管道中的问题在 .net 6 中恢复 AutoMapper NuGet 包

Posted

技术标签:

【中文标题】Azure DevOps 管道中的问题在 .net 6 中恢复 AutoMapper NuGet 包【英文标题】:Problem in Azure DevOps pipeline restoring AutoMapper NuGet package in .net 6 【发布时间】:2021-11-11 14:06:54 【问题描述】:

我在运行管道时收到以下错误消息:

包 AutoMapper.Extensions.Microsoft.DependencyInjection 8.1.1 与 net60 (.NETFramework,Version=v6.0) 不兼容。包 AutoMapper.Extensions.Microsoft.DependencyInjection 8.1.1 支持:netstandard2.0 (.NETStandard,Version=v2.0) 一个或多个包与 .NETFramework 不兼容,Version=v6.0。)

这里有什么我可以做的,还是需要等待 AutoMapper 团队更新?

【问题讨论】:

应该是work。 在 jenkins 管道上遇到同样的错误。你找到解决办法了吗? 看来我的错误与 Automapper 无关。我必须创建一个全新的管道来解决我的问题。 我通过使用 dotnetcore-cli restore-task 并切换到 windows-2022 解决了这个问题。看我的回答。 【参考方案1】:

看起来我的错误与 Automapper 无关。我必须创建一个全新的管道来解决我的问题。

【讨论】:

我提交的答案最终解决了同样的问题。【参考方案2】:

经过一番研究,我决定将 NuGetCommand (NuGet-Task) 替换为 DotNetCoreCli “恢复”任务。首先,我不得不将“vmImage”从“windows-latest”切换到“windows-2022”,因为最新的似乎有几个月的宽限期(阅读更多here)。就在那之前,我遇到了更多“与 net60 不兼容”的错误。不仅来自 AutoMapper。

这是我的 Azure DevOps Pipeline YAML,适用于所有在将管道迁移到 .NET 6 作为起点时遇到同样困难的人。

trigger:
  batch: true
  branches:
    include:
    - main

stages:
- stage: Build_Release
  pool:
    vmImage: windows-2022
  jobs:
  - job: Build
    variables:
      buildConfiguration: 'Release'
      solution: './SomeSolution.Name.sln'
    continueOnError: false
    steps:
 
    - task: DotNetCoreCLI@2
      inputs:
        command: 'restore'
        feedsToUse: 'config'
        nugetConfigPath: '.\NuGet.config'
        externalFeedCredentials: 'Telerik NuGet Connection'

    - task: VSBuild@1
      displayName: 'Build Solution'
      inputs:
        solution: '$(solution)'
        msbuildArgs: '/p:DeployOnBuild=true /p:PublishProvider=FileSystem /p:ExcludeApp_Data=False /p:DeleteExistingFiles=True /p:PublishUrl=$(Build.ArtifactStagingDirectory) /p:Configuration=$(buildConfiguration)'
        configuration: '$(buildConfiguration)'
        maximumCpuCount: true
        createLogFile: true

    - task: PublishBuildArtifacts@1
      displayName: 'Publish Artifacts'
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'
        ArtifactName: 'some-artifact-name'
        publishLocation: 'Container'

编辑:删除了 UseDotNet-Task,因为在使用 windows-2022 时似乎不需要它。 Link

【讨论】:

UseDotNet 不是必需的,但仍建议使用。它在当前的 Windows 2022 映像上基本上变成了无操作,但 Microsoft 可以选择停止预缓存您所依赖的版本(就像他们最近对许多 Node 版本所做的那样)。在这种情况下,该任务将确保您的管道继续工作。

以上是关于Azure DevOps 管道中的问题在 .net 6 中恢复 AutoMapper NuGet 包的主要内容,如果未能解决你的问题,请参考以下文章

Service Fabric Guest .Net Core 3.1 API exe 的 Azure DevOps 构建管道在创建包时失败

在 azure-devops 中的发布管道期间创建标签

未从 Azure Devops .NET 核心构建获得 SonarCloud 中的代码覆盖率

Microsoft.NET.Sdk.CrossTargeting.targets 上的 Visual Studio Build in Azure DevOps 管道错误

在 Azure DevOps 中使用构建管道运行 Google 测试

Azure DevOps 中的多个 YAML 构建管道