NuGet Push создает исключение PackageExistsAsDeletedException
Я тестирую размещенный на VSTS канал NuGet, создал и опубликовал NuPkg для канала с именем: SomeComponent.2.1.0.npkg
Я хотел повторно протестировать изменение, внесенное в определение выпуска, поэтому я удалил пакет из канала и очистил корзину.
Но теперь, когда я пытаюсь опубликовать, я получаю сообщение об ошибке:
Error: An unexpected error occurred while trying to push the package with VstsNuGetPush.exe. Exit code(1) and error(Error:
Microsoft.VisualStudio.Services.NuGet.WebApi.Exceptions.PackageExistsAsDeletedException: The version 2.1.0 of SomeComponent has been deleted. It cannot be restored or pushed.
at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.HandleResponse(HttpResponseMessage response)
at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__47.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__29.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at VstsNuGetPush.PackageAdder.AddPackageToFeed(String feedName, BlobIdentifierWithBlocks blobId)
at VstsNuGetPush.VstsNuGetPushOperation.AddPackageToFeed(BlobIdentifierWithBlocks blobId)
at VstsNuGetPush.VstsNuGetPushOperation.Execute(Stream stream)
at VstsNuGetPush.VstsNuGetPushCommand.MainCore(ILogger logger)
at VstsNuGetPush.VstsNuGetPushCommand.Main())
Packages failed to publish
Если я удалил пакет и опустошил мусорную корзину, что еще удерживает знания о том, что я ранее опубликовал этот пакет?
Кроме того, почему это должно заботиться, если я переиздаю пакет, я не могу просто переписать то, что там?
1 ответ
По той причине, что не удалось снова вставить удаленный пакет nuget в канал VSTS, вы вызвали ту же версию, что и удаленный пакет.
И это защищенный machnisim, что та же версия удаленного пакета не должна выдвигаться снова, так как это может вызвать путаницу для проектов, которые использовали версию пакета. И ниже приведен пример, который может привести к неожиданному результату, если обнаруженный пакет может нажать снова:
Предполагать project1
использует пакет nuget SomeComponent
с версией 2.1.0
, когда вы удаляете этот пакет в фиде VSTS, project1
найдет только пакет nuget SomeComponent
с версией 2.1.0
не доступен. Но если пакет SomeComponent
с той же версией 2.1.0
(.pkg имеет несколько отличных функций по сравнению с удаленными) может быть нажата снова, это приведет к неожиданному результату / ошибке для project1
,
Итак, одним словом, вы должны выдвинуть другую версию из удаленной версии для того же пакета nuget (например, push SomeComponent
пакет с версией 2.1.1
в приведенном выше примере).