При упаковке проекта проект со ссылками на проект по умолчанию считается ссылками пакета nuget .Я могу подумать о двух причинах, почему это хорошо.
- рекомендуется упаковать одну сборку на пакет
- , чтобы упростить процесс разработки для авторов пакетов
Давайте рассмотрим эти две причины
- Рекомендуется упаковать одну сборку на пакет
Представьте, что есть какая-то утилита сборки Утилита.dll, и я использую ее в своем пакете, PackageA,Если я добавлю в свой пакет и PackageA.dll, и utlity.dll, но позже создам PackageB, который также содержит utility.dll, возникнут конфликты, если в одном проекте будут использованы как PackageA, так и PackageB, поскольку будут две разные утилиты.dll.,При наличии одной сборки на пакет будут существовать PackageA и PackageB, которые зависят от разных версий пакета утилит, и NuGet может использовать свои правила управления версиями, чтобы выбрать одну.
для упрощения процесса разработки для авторов пакетов
Представьте, что у меня есть PackageB, который зависит от PackageA, и я хочу внести изменение, которое требует изменений как PackageA, так и PackageB.Если PackageB имеет PackageReference на PackageA, это означает, что я должен угадать, какие изменения мне понадобятся в PackageA, чтобы завершить изменения в PackageB, изменить, зафиксировать, упаковать и опубликовать PackageA, а затем изменить PackageB для использования новой версии PackageA.,Однако, если мои предположения о необходимых изменениях в PackageA оказались неверными, мне нужно будет снова изменить, зафиксировать, упаковать, опубликовать PackageA и затем изменить PackageB для использования новой, новой версии.Медленно и мучительно создавать функцию нескольких пакетов при использовании ссылок на пакеты.
Однако, сделав PackageA ссылкой на проект из PackageB, я могу изменить PackageA, и изменения сразу же становятся доступны в PackageB без необходимости создавать нескольковерсии PackageA.nupkg.