Давайте рассмотрим сценарий, в котором у нас есть два проекта .NET Standard, для которых мы хотим представить и создать пакеты NuGet для:
LibrarySolution
ClassLibrary1 (CL1)
∟ ClassLibrary2 (CL2)
Важно отметить, что CL1 имеет ProjectReference для CL2.
Документация NuGet гласит, что в идеале мы должны генерировать один пакет с одной сборкой, поэтому мы создаем пакет NuGet для каждого из них.
Проблема возникает, когда нам необходимо определить в рамках LibrarySolution, какая версия CL2 требуется в CL1, поскольку у нас есть прямая ссылка на проект.
На ум приходят два следующих подхода:
Ведение ссылок на проекты в решении, что означает, что нам нужно будет сохранить версию пакета в файле csproj, зафиксировать изменения версий и т. Д., Чтобы ограничения версий и требования к зависимостям были правильными (в настоящее время мы работаем с версиями) в конвейере CI и текущая версия хранится там, а не в коде).
Преобразовать зависимость от CL2 в PackageReference. Таким образом, CL1 всегда будет зависеть от версии CL2, которая уже была опубликована. Тем не менее, это будет означать, что вам придется потратить все силы на публикацию и обновление пакетов NuGet (утверждение PR, слияние, CI и т. Д.), Что может занять очень много времени.
Я думаю, что вариант 1 лучше, но он все еще чувствует себя немного ручным. Есть ли оптимальный способ решить эту проблему? Я бы предпочел не использовать пакет для ссылки на проект, который находится внутри того же решения, поскольку он чувствует ненужную косвенность.