shabarinadh.v Ответов: 1

NuGet для создания пакетов перезаписать, если существует


Hi,

I have a nuget package, it is created at post build event in jenkins, I am able to create and push it to nuget.org, but, when I try to push the package with same name(id) and version number, an error is thrown, 'Package with same name and Version number already exists, cannot modify it...'

I even tried to delete the package with delete command, the nuget package is unlisted, 
when I try to push the updated package with same name and version, it throws same package exists error

Is there any way, to replace the package without any change in name and version?

If not, can I get the latest version number for my package from nuget and delete(unlist) it, so that I can push the updated package with an incremental version 
number, with this 2 step process, I shall make sure, only a version of this package is visible in the nuget package manager UI

Thanks in advance..

--Shabarinadh

What I have tried:

What I have tried:

//Create package
nuget pack MyPackage.nuspec -IncludeReferencedProjects -Prop Configuration=Release -version 1.0.0.0 -outputDirectory ./Packages -Noninteractive -Verbosity Detailed

//delete package by name[id] and version
nuget delete MyPackage.Bin 1.0.0 -Source http://nugetpackages.xx.xx.xxx.com/ -Noninteractive -Verbosity Detailed

//push package command throws error, 'package already exists.. cannot modify...'
nuget push Packages/MyPackage.Bin.1.0.0.0.nupkg -Source http://nugetpackages.xx.xx.xxx.com/ -Noninteractive -Verbosity Detailed

I am able to create and push it to nuget.org, but, when I try to push the package with same name(id) and version number, an error is thrown, 'Package with same name and Version number already exists, cannot modify it...'

I even tried to delete the package with delete command, the nuget package is unlisted, 
when I try to push the updated package with same name and version, it throws same package exists error

1 Ответов

Рейтинг:
2

Girijesh Kr

Как только вы публикуете определенную версию пакета в ленте, этот номер версии постоянно резервируется. Вы не можете загрузить новый пакет версий с тем же номером версии или удалить его и загрузить новый пакет с той же версией.
Это потому, что многие клиенты пакетов, включая NuGet, хранят локальный кэш пакетов на вашем компьютере. Как только клиент кэширует определенный пакет@version, он возвращает эту копию при будущих запросах на установку/восстановление. Если на сервере вы замените пакет@version (rev 1) на новый пакет@version (rev 2), клиент не сможет определить разницу. Это может привести к неопределенным результатам сборки на разных машинах.

Таким образом, мы не могли перезаписать все пакеты, которые уже были загружены, даже мы не могли удалить их и повторно загрузить. Чтобы решить эту проблему, единственный способ-загрузить пакеты с новой версией.