4 votes

Nuget ne vérifie pas les versions lorsqu'il obtient la même dépendance plusieurs fois.

Mon entreprise utilise maintenant nuget pour regrouper toutes nos assemblies partagées. Nous avons également commencé à les versionner en fonction de semver en utilisant des balises.

J'ai une situation où nuget ne fonctionne pas comme je m'y attendrais.

J'ai 3 assemblies partagées....

  • Enum
  • Common
  • BusinessLogic

En termes de références de packages ...

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

la raison pour laquelle BusinessLogic dépend à la fois de Common et Enum est que je ne veux pas avoir à mettre à jour la dépendance de Common (et reconstruire, regrouper, publier) quand elle n'a pas besoin d'utiliser un nouvel enum qui a été ajouté juste pour être utilisé dans BusinessLogic

Donc, j'ajoute un énumération et je veux l'utiliser dans BusinessLogic.

Voici les versions de tout avant que je fasse cela ...

  • Enum = 1.4.0
  • Common = 1.2.1
  • BusinessLogic = 2.0.1

J'ajoute maintenant la nouvelle valeur d'énumération que je veux utiliser dans BusinessLogic au projet Enum et je construis, regroupe, publie ...

  • Enum = 1.5.0
  • Common = 1.2.1
  • BusinessLogic = 2.0.1

Maintenant, je fais ma modification à BusinessLogic, commit, push, package, etc ...

  • Enum = 1.5.0
  • Common = 1.2.1
  • BusinessLogic = 2.1.0

Donc, maintenant les dépendances ressemblent à ceci ...

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

Maintenant je lance ...

nuget pack BusinessLogic.csproj

Ce à quoi je m'attends, c'est que nuget voit que Common a besoin de 1.4.0 de Enum, mais que BusinessLogic a besoin de 1.5.0 et ajoute donc une dépendance dans le package pour Enum >= 1.5.0, mais il n'y a aucune dépendance dans Enum du tout, je pense qu'il suppose que Common la remplira.

Ce comportement est-il voulu ?

1voto

David Ebbo Points 13246

Je suis d'accord avec vous que le comportement actuel n'est pas correct. nuget essaie d'optimiser les dépendances pour les garder à un ensemble minimal, mais ne tient pas compte de ce cas où les versions diffèrent.

Pouvez-vous s'il vous plaît signaler un bug sur http://nuget.codeplex.com/ afin qu'il apparaisse sur le radar?

En attendant, vous devriez pouvoir ajouter explicitement la dépendance dans le fichier .nuspec compagnon utilisé pour construire le package BusinessLogic.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X