如何修复不匹配的 Azure 管道 yaml asp.net sdk 版本

Posted

技术标签:

【中文标题】如何修复不匹配的 Azure 管道 yaml asp.net sdk 版本【英文标题】:How to fix Azure pipeline yaml asp.net sdk version that does not match 【发布时间】:2022-01-15 15:18:22 【问题描述】:

nuget 命令失败,退出代码 (1) 和错误 (C:\Program Files\dotnet\sdk\5.0.403\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(141, 5):错误NETSDK1045:当前.NET SDK不支持面向.NET 6.0。要么面向.NET 5.0或更低版本,要么使用支持.NET 6.0的.NET SDK版本。[D:\a\1\ s\app-code\app-code.csproj

我在上面遇到错误。 我正在使用只有 .net 6 的 Visual Studio 代码 2022 这是我的 yaml 文件代码:

# ASP.NET Core (.NET Framework)
# Build and test ASP.NET Core projects targeting the full .NET Framework.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core

trigger:
- master

pool:
  vmImage: 'windows-latest'

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

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'



- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

第一次使用 yaml,谁能告诉我如何调整 .net 版本以及在哪里添加什么代码。 很抱歉在写这个问题时出现任何错误。

【问题讨论】:

【参考方案1】:

错误 NETSDK1045:当前的 .NET SDK 不支持面向 .NET 6.0。以 .NET 5.0 或更低版本为目标,或者使用支持 .NET 6.0 的 .NET SDK 版本。

这表明 .NET 6.0 尚未安装在 Azure Pipelines 中最新的托管构建代理上,在运行任何 dotnet 命令之前,需要将以下任务添加到管道中:

需要在代理中安装.NET 6 SDK,在DotNetCoreCLI前添加:

- task: UseDotNet@2
  displayName: 'Install .NET Core sdk 6.x'
  inputs:
    version: 6.x

这将下载最新的 6.0 版本的 dotnet,并在构建时使用它。

请参考SO线程

【讨论】:

以上是关于如何修复不匹配的 Azure 管道 yaml asp.net sdk 版本的主要内容,如果未能解决你的问题,请参考以下文章

如何在 azure devops YAML 管道中将单个代理用于多个作业/阶段

如何在 yaml 中处理 Azure DevOps 管道中的错误?

如何在 Azure DevOps yaml 管道中设置 ENVIRONMENT 状态

Azure 管道 yaml 权限被拒绝

如何排除对管道 yaml 文件的更改以触发构建 i azure devops?

合并 PR 后如何限制 Azure DevOps YAML 管道中的关联工作项?