Depuis son arrivée dans nos vies vers 2010, NuGet est devenu un incontournable pour les développeurs .NET. Les choses sont maintenant ainsi faites. Vous ne vous souvenez probablement pas de la dernière fois où vous êtes allé télécharger manuellement une librairie pour l’intégrer à votre projet.
NuGet est tellement intégré que c’est devenu un automatisme. À la recherche d’une librairie? Le premier réflexe doit être de passer par NuGet à partir de Visual Studio afin de voir si quelque chose existe déjà à ce sujet. La même chose s’applique pour les extensions pouvant être ajoutées à Visual Studio. NuGet est probablement votre premier et dernier arrêt.
Ceci étant dit, l’intégration de NuGet est basée sur certains principes. Son utilisation est tellement simple et conviviale qu’il ne sert à pas grand-chose d’y porter attention.
Jusqu’au moment où vous tomberez sur des messages d’erreur du genre lorsque vous compilerez votre projet pour la première fois et que NuGet tentera de télécharger les librairies manquantes.
Le message d’erreur en soi est très clair. La version de NuGet que vous avez en ce moment est incompatible avec le format du fichier de spécification de la librairie en question. En termes clairs, personne ne peut rien faire pour vous à ce moment-ci.
La solution est sous votre nez
Au moment d’écrire ceci, la version courante de NuGet est 2.6. En passant régulièrement par la fenêtre d’ajout de librairies de Visual Studio, vous êtes invités régulièrement à mettre à jour NuGet. Cela est une excellente initiative de votre part. Mettre à jour votre système contribue à garder tout le monde heureux.
Or, par sa conception, lorsque vous activez la récupération des librairies lors de la compilation initiale de votre projet, NuGet ira placer un répertoire .nuget à la racine de votre solution. C’est de cette façon que NuGet est en mesure de s’exécuter afin de réaliser sa petite besogne.
Il s’avère que, une fois que ce répertoire et son contenu sont mis en place, il n’est plus mis à jour à moins que vous interveniez. C’est de là que provient l’idée à la source de ce billet.
La solution facile est la suivante :
- Retirer le dossier .nuget de votre solution
- Supprimer le répertoire .nuget de la racine de votre solution
- Dans Visual Studio, à partir de l’explorateur de solution, à l’aide d’un clic droit sur la solution, cliquer sur le menu « Enable package restore ».
- Allez prendre de l’air afin de réduire votre stress.
C’était pourtant si simple!
Une alternative est encore plus simple, mais comporte une certaine faiblesse. Vous pouvez exécuter, à partir de votre répertoire .nuget, la commande suivante : nuget.exe update -self. Le point faible étant que, si le fichier nuget.targets est modifié dans une mise à jour, celui-ci ne sera pas mis à jour.
C’est tout pour cette fois-ci!