Как определить идентификатор пакета-преемника после переименования идентификатора пакета NuGet - PullRequest
1 голос
/ 28 октября 2019

Я знаю, вам не следует менять ID пакета для пакета NuGet. Но я сделал это из-за большого рефакторинга.

Теперь я хочу узнать, существует ли правильный способ определения преемника пакета NuGet.

Старый идентификатор в Nuspec: OldLibrary1Новый идентификатор в файле Nuspec / csproj: Library1

Если пользователь открывает окно управления пакетами NuGet для решения Visual Studio и установлен старый пакет (ID OldLibrary1-1.0.0), он должен увидеть обновление /обновить до пакета Library1-2.0.0.

Можно ли как-то это определить?

Кстати, я использую ProGet в качестве сервера NuGet.

1 Ответ

1 голос
/ 28 октября 2019

NuGet недавно добавил информацию об устаревании в свой протокол HTTP, однако, насколько мне известно, его реализовал только nuget.org (очень новый, NuGet 5.3, Visual Studio 16.3). Если ваш частный сервер Nuget (Proget) еще не внедрил его, вы можете попробовать связаться с разработчиками и попросить их реализовать его.

В противном случае лучший вариант, о котором я слышал, - это создать новую версиювашей старой библиотеки, не включайте в нее никаких сборок, просто имейте зависимость NuGet от вашего нового идентификатора пакета.

Проблема в том, что если ваш потребитель использует PackageReference, опыт обновления Visual Studio неЭто пока здорово, потому что когда вы выпускаете новую версию вашего нового пакета, люди, получающие ее как переходную зависимость от вашего старого пакета, не будут уведомлены о доступном обновлении. Чтобы обойти эту проблему, можно включить файл целей MSBuild , который отображает предупреждение о сборке при каждой сборке, сообщая им об установке нового пакета и удалении старого пакета. Люди, которые игнорируют предупреждения, не увидят его, поэтому, если вы хотите быть экстремальным, сделайте это ошибкой, но это поможет вывести сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...