Azure DevOps 管道错误 "Package (...) is not compatible with net60"
Azure DevOps Pipeline error "Package (...) is not compatible with net60"
我在 Azure Devops 中有源代码控制和管道。
我的项目有两个目标框架:3.1 和 6。
虽然 运行 管道,但在恢复包时会抛出错误:
##[error]The nuget command failed with exit code(1) and error(Errors in D:\a\s\nuget-tst\src\nuget-tst.csproj
Package Microsoft.Extensions.Configuration.Json 3.1.3 is not compatible with net60 (.NETFramework,Version=v6.0). Package
Microsoft.Extensions.Configuration.Json 3.1.3 supports:
- netcoreapp3.1 (.NETCoreApp,Version=v3.1)
- netstandard2.0 (.NETStandard,Version=v2.0)
Package Microsoft.Extensions.Configuration.FileExtensions 3.1.3 is not compatible with net60 (.NETFramework,Version=v6.0). Package
Microsoft.Extensions.Configuration.FileExtensions 3.1.3 supports:
- netcoreapp3.1 (.NETCoreApp,Version=v3.1)
- netstandard2.0 (.NETStandard,Version=v2.0)
Package Microsoft.Extensions.Configuration.EnvironmentVariables 3.1.3 is not compatible with net60 (.NETFramework,Version=v6.0). Package Microsoft.Extensions.Configuration.EnvironmentVariables 3.1.3
supports:
- netcoreapp3.1 (.NETCoreApp,Version=v3.1)
- netstandard2.0 (.NETStandard,Version=v2.0)
One or more packages are incompatible with .NETFramework,Version=v6.0.
Package Microsoft.IdentityModel.Tokens 6.5.0 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Package
Microsoft.IdentityModel.Tokens 6.5.0 supports:
- net45 (.NETFramework,Version=v4.5)
- net461 (.NETFramework,Version=v4.6.1)
- netstandard2.0 (.NETStandard,Version=v2.0)
Package Microsoft.Extensions.FileSystemGlobbing 3.1.3 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Package
Microsoft.Extensions.FileSystemGlobbing 3.1.3 supports: netstandard2.0
(.NETStandard,Version=v2.0)
One or more packages are incompatible with .NETCoreApp,Version=v3.1.)
##[error]Packages failed to restore
Azure 管道 yaml:
trigger:
branches:
include:
- master
pr:
- master
- develop
pool:
vmImage: 'windows-latest'
variables:
solution: '*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
major: 1
minor: 0
name: $(major).$(minor)$(Rev:.r)
stages:
# Versioning master branch builds
- stage:
displayName: Build_Master_Version_Number
condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
jobs:
- job: Build_Master_Version_Number
variables:
patch: $[counter(variables['minor'], 0)]
steps:
- bash: |
echo "##vso[build.updatebuildnumber]$(major).$(minor).$(patch)"
name: SetMasterBuildName
# Versioning feature branch and PR builds
- stage:
displayName: Build_Branch_Version_Number
condition: ne(variables['Build.SourceBranch'], 'refs/heads/master')
jobs:
- job: Build_Branch_Version_Number
variables:
prpatch: $[counter(variables['system.pullrequest.pullrequestid'], 0)]
brpatch: $[counter(variables['build.sourcebranchname'], 0)]
steps:
- bash: |
echo "##vso[build.updatebuildnumber]$(major).$(minor)-PullRequest.$(prpatch)"
condition: eq(variables['Build.Reason'], 'PullRequest')
name: SetPRBuildName
- bash: |
echo "##vso[build.updatebuildnumber]$(major).$(minor)-$(Build.SourceBranchName).$(brpatch)"
condition: ne(variables['Build.Reason'], 'PullRequest')
name: SetBranchBuildName
# Stage for building your application
- stage: Build_Steps
displayName: Build_Steps
condition: always()
jobs:
- job: Build_Steps
displayName: Build_Steps
steps:
- task: UseDotNet@2
displayName: 'Use .NET Core SDK 3.1.200'
inputs:
packageType: sdk
version: 3.1.200
- task: UseDotNet@2
displayName: 'Install .NET 6 SDK'
inputs:
packageType: 'sdk'
version: '6.0.x'
performMultiLevelLookup: true
- task: NuGetCommand@2
displayName: 'Restore packages'
inputs:
command: 'restore'
- task: DotNetCoreCLI@2
displayName: 'Build solution'
inputs:
command: 'build'
arguments: '--configuration $(buildConfiguration) --no-restore /p:Version=$(Build.BuildNumber)'
projects: '$(solution)'
- task: DotNetCoreCLI@2
displayName: 'Pack packages'
inputs:
command: 'pack'
versioningScheme: byBuildNumber
arguments: '--configuration $(buildConfiguration)'
packagesToPack: '**/*.csproj'
nobuild: true
packDestination: '$(Build.ArtifactStagingDirectory)'
- task: NuGetCommand@2
displayName: "Publish to Nuget Feed"
inputs:
command: 'push'
feedsToUse: 'select'
packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
vstsFeed: 'nugetfeeds/Dev'
publishVstsFeed: 'nugetfeeds/Dev'
我发现要克服的唯一方法是将 vmImage 设置为 'windows-2019',但这对我来说似乎很奇怪。为什么它不能与最新版本(windows-最新)一起使用?
类似的事情发生在我身上。
通过在 nuget 还原步骤 之前 添加 nuget 工具安装程序任务来解决它:
- task: NuGetToolInstaller@1
inputs:
versionSpec:
checkLatest: true
添加这一步之前,nuget工具版本很旧(在nuget restore任务的输出日志中看到这一行)
Caching tool: NuGet 5.4.0 x64
修改后,同样的日志显示:
Detected NuGet version 6.1.0.106 / 6.1.0 ...
我的想法来自这里:
Dotnet github issues
我在 Azure Devops 中有源代码控制和管道。
我的项目有两个目标框架:3.1 和 6。
虽然 运行 管道,但在恢复包时会抛出错误:
##[error]The nuget command failed with exit code(1) and error(Errors in D:\a\s\nuget-tst\src\nuget-tst.csproj Package Microsoft.Extensions.Configuration.Json 3.1.3 is not compatible with net60 (.NETFramework,Version=v6.0). Package Microsoft.Extensions.Configuration.Json 3.1.3 supports: - netcoreapp3.1 (.NETCoreApp,Version=v3.1) - netstandard2.0 (.NETStandard,Version=v2.0) Package Microsoft.Extensions.Configuration.FileExtensions 3.1.3 is not compatible with net60 (.NETFramework,Version=v6.0). Package Microsoft.Extensions.Configuration.FileExtensions 3.1.3 supports: - netcoreapp3.1 (.NETCoreApp,Version=v3.1) - netstandard2.0 (.NETStandard,Version=v2.0) Package Microsoft.Extensions.Configuration.EnvironmentVariables 3.1.3 is not compatible with net60 (.NETFramework,Version=v6.0). Package Microsoft.Extensions.Configuration.EnvironmentVariables 3.1.3 supports: - netcoreapp3.1 (.NETCoreApp,Version=v3.1) - netstandard2.0 (.NETStandard,Version=v2.0) One or more packages are incompatible with .NETFramework,Version=v6.0. Package Microsoft.IdentityModel.Tokens 6.5.0 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Package Microsoft.IdentityModel.Tokens 6.5.0 supports: - net45 (.NETFramework,Version=v4.5) - net461 (.NETFramework,Version=v4.6.1) - netstandard2.0 (.NETStandard,Version=v2.0) Package Microsoft.Extensions.FileSystemGlobbing 3.1.3 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Package Microsoft.Extensions.FileSystemGlobbing 3.1.3 supports: netstandard2.0 (.NETStandard,Version=v2.0) One or more packages are incompatible with .NETCoreApp,Version=v3.1.) ##[error]Packages failed to restore
Azure 管道 yaml:
trigger:
branches:
include:
- master
pr:
- master
- develop
pool:
vmImage: 'windows-latest'
variables:
solution: '*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
major: 1
minor: 0
name: $(major).$(minor)$(Rev:.r)
stages:
# Versioning master branch builds
- stage:
displayName: Build_Master_Version_Number
condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
jobs:
- job: Build_Master_Version_Number
variables:
patch: $[counter(variables['minor'], 0)]
steps:
- bash: |
echo "##vso[build.updatebuildnumber]$(major).$(minor).$(patch)"
name: SetMasterBuildName
# Versioning feature branch and PR builds
- stage:
displayName: Build_Branch_Version_Number
condition: ne(variables['Build.SourceBranch'], 'refs/heads/master')
jobs:
- job: Build_Branch_Version_Number
variables:
prpatch: $[counter(variables['system.pullrequest.pullrequestid'], 0)]
brpatch: $[counter(variables['build.sourcebranchname'], 0)]
steps:
- bash: |
echo "##vso[build.updatebuildnumber]$(major).$(minor)-PullRequest.$(prpatch)"
condition: eq(variables['Build.Reason'], 'PullRequest')
name: SetPRBuildName
- bash: |
echo "##vso[build.updatebuildnumber]$(major).$(minor)-$(Build.SourceBranchName).$(brpatch)"
condition: ne(variables['Build.Reason'], 'PullRequest')
name: SetBranchBuildName
# Stage for building your application
- stage: Build_Steps
displayName: Build_Steps
condition: always()
jobs:
- job: Build_Steps
displayName: Build_Steps
steps:
- task: UseDotNet@2
displayName: 'Use .NET Core SDK 3.1.200'
inputs:
packageType: sdk
version: 3.1.200
- task: UseDotNet@2
displayName: 'Install .NET 6 SDK'
inputs:
packageType: 'sdk'
version: '6.0.x'
performMultiLevelLookup: true
- task: NuGetCommand@2
displayName: 'Restore packages'
inputs:
command: 'restore'
- task: DotNetCoreCLI@2
displayName: 'Build solution'
inputs:
command: 'build'
arguments: '--configuration $(buildConfiguration) --no-restore /p:Version=$(Build.BuildNumber)'
projects: '$(solution)'
- task: DotNetCoreCLI@2
displayName: 'Pack packages'
inputs:
command: 'pack'
versioningScheme: byBuildNumber
arguments: '--configuration $(buildConfiguration)'
packagesToPack: '**/*.csproj'
nobuild: true
packDestination: '$(Build.ArtifactStagingDirectory)'
- task: NuGetCommand@2
displayName: "Publish to Nuget Feed"
inputs:
command: 'push'
feedsToUse: 'select'
packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
vstsFeed: 'nugetfeeds/Dev'
publishVstsFeed: 'nugetfeeds/Dev'
我发现要克服的唯一方法是将 vmImage 设置为 'windows-2019',但这对我来说似乎很奇怪。为什么它不能与最新版本(windows-最新)一起使用?
类似的事情发生在我身上。 通过在 nuget 还原步骤 之前 添加 nuget 工具安装程序任务来解决它:
- task: NuGetToolInstaller@1
inputs:
versionSpec:
checkLatest: true
添加这一步之前,nuget工具版本很旧(在nuget restore任务的输出日志中看到这一行)
Caching tool: NuGet 5.4.0 x64
修改后,同样的日志显示:
Detected NuGet version 6.1.0.106 / 6.1.0 ...
我的想法来自这里: Dotnet github issues