使用.NET 6.0时Azure DevOps构建失败,报NU1201错误
解决NuGet还原时的框架不兼容错误(NU1201)
错误信息
##[error]NuGet命令执行失败,退出代码为(1),错误信息为(NU1201: 项目Demo与net5.0(.NETCoreApp,Version=v5.0)不兼容。项目Demo支持的框架为net6.0(.NETCoreApp,Version=v6.0))
问题原因
尽管Pipeline中已安装.NET 6 SDK,但NuGet还原任务默认可能仍尝试用.NET 5环境处理依赖,导致与项目的net6.0框架不匹配。
解决方法
1. 给NuGet还原任务指定目标框架
修改NuGetCommand@2任务,添加arguments参数明确指定net6.0:
- task: NuGetCommand@2 inputs: restoreSolution: '$(solution)' arguments: '-r net6.0'
2. 确保VSBuild任务使用正确框架
在VSBuild的msbuildArgs中加入/p:TargetFramework=net6.0,强制编译时使用net6.0:
- 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" /p:TargetFramework=net6.0' platform: '$(buildPlatform)' configuration: '$(buildConfiguration)'
3. 锁定NuGet工具版本
确保NuGet版本支持.NET 6,将NuGetToolInstaller@1的versionSpec设为6.x:
- task: NuGetToolInstaller@1 inputs: versionSpec: '6.x' checkLatest: true
完整修正后的YAML
trigger: - main pool: vmImage: 'windows-2022' variables: solution: '**/*.sln' buildPlatform: 'Any CPU' buildConfiguration: 'Release' steps: # 安装.NET 6 SDK - task: UseDotNet@2 displayName: Use .NET 6.0 inputs: packageType: 'sdk' version: '6.0.x' # 验证已安装的SDK - task: CmdLine@2 inputs: script: 'dotnet --list-sdks' # 安装兼容.NET 6的NuGet工具 - task: NuGetToolInstaller@1 inputs: versionSpec: '6.x' checkLatest: true # 指定net6.0进行NuGet还原 - task: NuGetCommand@2 inputs: restoreSolution: '$(solution)' arguments: '-r net6.0' # 用net6.0编译并打包项目 - 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" /p:TargetFramework=net6.0' platform: '$(buildPlatform)' configuration: '$(buildConfiguration)' - task: VSTest@2 inputs: platform: '$(buildPlatform)' configuration: '$(buildConfiguration)'
内容的提问来源于stack exchange,提问作者Designworxz
相关产品推荐
相关产品推荐

