在运行在WindowsServer2019代理上的Azure DevOps服务器(版本2019.0.1)中,为NuGet push任务选择了“允许重复项被跳过”选项,将显示警告:
“允许重复被跳过”选项目前只能在Azure管道上使用。如果NuGet.exe遇到冲突,任务将失败。
该任务将导致以下错误,导致任务失败,指示应用上述警告:
响应状态代码并不表示成功: 409 (冲突-提要已经包含'MyPackage X.Y.Z‘。(DevOps活性ID: 1A57312F-3C56-4E4D-9E78-73C7072A288F)。
我想知道这个问题对于Azure DevOps服务器(而不是Azure DevOps服务)是特殊的,还是我做错了什么,或者是否有其他的解决办法。我注意到其他人在另一个问题上也有来自this comment的问题,在有人问到如何忽略错误409 (重复包)之后,这个选项是可用的。
我想使用NuGet任务忽略重复的包,理想情况下,可以跳过DevOps服务器上的“允许重复”选项。我知道可以使用脚本来解决这个问题,但如果可能的话,我更愿意避免这种情况。任何帮助都很感激。
发布于 2019-07-01 16:27:50
我不知道Azure DevOps任务,但是如果升级到nuget.exe 5.1,可以使用新的 option。这应该适用于任何正确实现NuGet协议的NuGet服务器以及任何CI服务器/代理。
发布于 2020-04-22 07:59:44
如果使用的是NuGetCommand@2 Azure管道任务,则可以使用allowPackageConflicts参数。
allowPackageConflicts它允许任务报告成功,即使您的一些包被拒绝与409冲突错误。此选项目前仅适用于Azure管道并使用Windows代理。如果NuGet.exe遇到冲突,任务将失败。此选项将不起作用,如果您在代理环境中,则发布将失败。
- https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/package/nuget
发布于 2019-11-10 09:07:32
如果您切换到azure管道(这似乎是一种新的方法),您可以使用dotnet命令。--skip-duplicate选项将在DotNetCore3.1(仍在预览中)中用于dotnet nuget push命令(无需使用NuGet命令,因为它已经在dotnet中可用)。但是,如果安装了最新的.NET核心,现在就可以使用它了。
例如,这一阶段将获取特定文件夹中的任何nuGet,安装支持跳过复制的最新dotnet核心并将其推送到存储库提要。
- stage:
displayName: 'Release'
condition: succeeded()
jobs:
- job: 'Publish'
displayName: 'Publish nuGet Package'
steps:
- download: current
artifact: $(PIPELINE_ARTIFACT_NAME)
displayName: 'Download pipeline artifact'
- script: ls $(PATH_PIPELINE_ARTIFACT_NAME)
displayName: 'Display contents of downloaded articacts path'
- task: NuGetAuthenticate@0
displayName: 'Authenticate in NuGet feed'
- task: UseDotNet@2
displayName: 'Use .NET Core sdk 3.1 (preview)'
inputs:
packageType: sdk
version: '3.1.100-preview2-014569'
installationPath: $(Agent.ToolsDirectory)/dotnet
- script: dotnet nuget push $(PATH_PIPELINE_ARTIFACT_NAME)/**/*.nupkg --source $(NUGET_FEED) --api-key $(NUGET_API_KEY) --skip-duplicate
displayName: 'Uploads nuGet packages'https://stackoverflow.com/questions/56834744
复制相似问题