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 в приведенном выше примере).

Другие вопросы по тегам