web-dev-qa-db-fra.com

Faut-il inclure le dossier Nuget PACKAGE dans le contrôle de version?

J'aimerais savoir

Dans le projet C # ou VB.NET, devrions-nous inclure le dossier PACKAGE (dossier de package de nugget créé à la racine de mon projet qui contient les fichiers nupkg et autres contenus) dans notre référentiel de contrôle de source (Git par exemple).

72
Bastien Vandamme

Beaucoup de temps s'est écoulé et NuGet a changé, voici donc une nouvelle réponse.

NuGet ne crée plus de dossier de packages dans votre structure source. À la place, il y en a un dans votre répertoire utilisateur (%HOME%\.nuget\packages pour être précis) où il place tous les packages qu'il télécharge, et les projets les référencent simplement.

Donc, la réponse simple ces jours-ci est non, vous ne devriez pas. Si vous craignez que les packages dont vous avez besoin disparaissent, vous devez créer un miroir NuGet local que vous sauvegardez séparément.

29
Sebastian Redl

Ça dépend.

Consultez réponse de Bart van Ingen Schena pour déterminer s'il est possible d'ignorer le dossier packages.

Fondamentalement: oui, NuGet est conçu pour que vous puissiez ignorer le dossier packages et NuGet tirera tout d'Internet s'il est manquant.

Mais faut-il l'ignorer? Je dis: ça dépend.
OMI, il s'agit de "pouvons-nous continuer à travailler au cas où le référentiel de paquets ne serait pas disponible" (que ce soit temporairement ou définitivement)

Pour mes projets OSS personnels, j'ai le dossier packages ignoré dans chacun d'eux.
Lorsque nuget.org est hors ligne, je vais simplement attendre et continuer un autre jour.

Mais c'est quelque chose de différent au travail.
Bien sûr, vous avez probablement encore les packages localement sur une machine, mais économisez-vous de l'espace en cas de problème lorsque vos builds se cassent car votre serveur de build ne peut pas atteindre nuget.org?

Nous avons décidé que l'espace est bon marché et nous ne voulons pas les tracas, c'est pourquoi nous validons le dossier packages au contrôle de code source.

53
Christian Specht

La règle de base pour ce qui entre dans un référentiel de contrôle de source est que vous y stockez tout ce qui concerne un projet dont vous avez besoin pour pouvoir construire, tester, déployer et exécuter le projet et qui ne peut pas être généré à partir d'éléments déjà présents dans le référentiel .

En d'autres termes, si vous pouvez jeter le dossier PACKAGE et son contenu sans affecter vos capacités, continuez à travailler sur le projet (la construction peut prendre plus de temps, mais vous n'avez pas besoin de rechercher et d'installer quoi que ce soit vous-même), alors le dossier peut être laissé en toute sécurité hors du référentiel.
Si le dossier contient des packages tiers qui peuvent prendre du temps à télécharger ou qui peuvent devenir indisponibles, cela peut être une raison pour les ajouter à votre référentiel de toute façon.

30