web-dev-qa-db-fra.com

Comment spécifier une version de dépendance spécifique dans nuspec?

Je crée mon premier paquet nuget. J'ai ajouté une dépendance avec une version qui n'est pas la dernière version. Cependant, je ne veux pas mettre à jour vers la dernière version de cette dépendance. Est-il possible de lui demander d'utiliser la version spécifique?

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

Lorsque j'installe le package, je vois ceci:

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

Cela crée ce qui suit lorsque j'installe le package.

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

J'aimerais vraiment voir quelque chose comme ceci: Tenter de résoudre la dépendance 'NHibernate (3.2.0.3001)'.

76
devlife

Vous devriez pouvoir forcer une version exacte avec des crochets:

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

Des informations complètes sur les formats que vous pouvez utiliser se trouvent sur le site NuGet, ici:

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

121
Danny Tuppeny

Sur le site NuGet docs , les notations complètes:

enter image description here

16

Selon http://nuget.codeplex.com/wikipage?title=Dependency%20Resolution et d'autres sources, en spécifiant simplement la borne inférieure comme

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

entraînera le niveau de révision/correctif le plus élevé de la version majeure/mineure la plus basse correspondant à cette version.

À moins que je ne comprenne complètement la documentation, cela correspondrait à la version 3.2. * La plus élevée mais pas à la version 3.3. * Ou supérieure à moins qu'aucune version 3.2. * Ne soit trouvée.

S'il y a une raison pour laquelle 3.2.0.3001 est la seule version contre laquelle vous souhaitez dépendre, vous pouvez constater que votre package n'est pas compatible avec d'autres packages qui dépendent également de NHibernate par exemple parce que l'autre package dépend de NHibernate [3.2.0.3002 , 3.3) ce qui signifie au moins 3.2.0.3002 mais inférieur à 3.3.

2
Chris Lee

Du côté de l'utilisateur, vous pouvez également contraindre la mise à niveau en spécifiant allowedVersions dans packages.config. http://docs.nuget.org/docs/reference/versioning#Constraining_Upgrades_To_Allowed_Versions

2
ferventcoder