Как указать конкретную версию зависимостей в nuspec?

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

<dependencies>
  <dependency id="NHibernate" version="3.2.0.3001" />
</dependencies>

Когда я устанавливаю пакет, я вижу следующее:

Attempting to resolve dependency 'NHibernate (≥ 3.2.0.3001)'.

Это создает следующее, когда я устанавливаю пакет.

<packages>
  <package id="Iesi.Collections" version="3.2.0.4000" />
  <package id="NHibernate" version="3.2.0.4000" />
</packages>

Мне бы очень хотелось увидеть что-то вроде этого:   Попытка разрешить зависимость "NHibernate (3.2.0.3001)".

Ответ 1

Вы должны иметь возможность принудительно установить точную версию с помощью скобок:

<dependency id="NHibernate" version="[3.2.0.3001]" />

Полная информация о форматах, которые вы можете использовать, находится на сайте NuGet, здесь:

http://docs.nuget.org/docs/reference/version-range-specification

Ответ 4

В соответствии с http://nuget.codeplex.com/wikipage?title=Dependency%20Resolution и другими источниками просто указывая нижнюю границу как

<dependencies>
  <dependency id="NHibernate" version="3.2.0.3001" />
</dependencies>

приведет к наивысшему уровню исправления/исправления самой младшей версии майора/малой версии, соответствующей этой версии.

Если я полностью не понимаю документацию, это будет соответствовать самой высокой версии 3.2. *, но не версии 3.3. * или более, если не будет найдена версия 3.2. *.

Если есть причина, по которой 3.2.0.3001 - единственная версия, от которой вы хотите зависеть, вы можете обнаружить, что ваш пакет несовместим с другими пакетами, которые также зависят от NHibernate, например, потому что другой пакет зависит от NHibernate [ 3.2.0.3002,3.3), что означает не менее 3.2.0.3002, но ниже 3.3.