Nuget не проверяет версии при получении одной и той же зависимости несколько раз - PullRequest
3 голосов
/ 19 июля 2011

Моя компания сейчас использует nuget для упаковки всех наших общих сборок. Мы также начали управление версиями на основе semver с использованием тегов.

У меня есть ситуация, когда nuget не работает так, как я ожидал.

У меня есть 3 общие сборки ....

  • Enum
  • Common
  • BusinessLogic

В отношении ссылок на пакеты ...

  • Common => Enum
  • BusinessLogic => Common, Enum

причина, по которой BusinessLogic зависит от Common и Enum, заключается в том, что мне не нужно обновлять зависимость Common (и перестраивать, упаковывать, публиковать), когда ему не нужно использовать новое перечисление, добавленное просто для использования в BusinessLogic

Итак, я добавляю enum и хочу использовать его в BusinessLogic.

Это версии всего, прежде чем я это сделаю ...

  • Enum = 1.4.0
  • Общий = 1.2.1
  • BusinessLogic = 2.0.1

Теперь я добавляю новое значение enum, которое хочу использовать в BusinessLogic, в проект Enum и собираю, упаковываю, публикую ...

  • Enum = 1.5.0
  • Общий = 1.2.1
  • BusinessLogic = 2.0.1

Теперь я делаю изменения в BusinessLogic, фиксирую, толкаю, упаковываю и т. Д ...

  • Enum = 1.5.0
  • Общий = 1.2.1
  • BusinessLogic = 2.1.0

Итак, теперь зависимости выглядят так ...

  • Common => Enum 1.4.0
  • BusinessLogic => Enum 1.5.0

Теперь я бегу ...

nuget pack BusinessLogic.csproj

Я ожидаю, что nuget увидит, что Common требует 1.4.0 Enum, но BusinessLogic требует 1.5.0 и поэтому добавляет зависимость в пакет для Enum >= 1.5.0, но в Enum вообще нет зависимости, Я думаю, что предполагается, что Common выполнит это.

Это поведение задумано?

1 Ответ

1 голос
/ 19 июля 2011

Я согласен с вами, что текущее поведение не является правильным.nuget пытается оптимизировать зависимости, чтобы сохранить их минимальный набор, но не учитывает этот случай, когда версии различаются.

Не могли бы вы сообщить об ошибке на http://nuget.codeplex.com/, чтобы она появиласьна радаре?

В качестве временного решения вы должны иметь возможность явно добавить зависимость в сопутствующий файл .nuspec, используемый для создания пакета BusinessLogic.

...