107 votes

Le dossier .nuget doit-il être ajouté au contrôle de version ?

Avec les nouvelles versions de NuGet, il est possible de configurer un projet pour qu'il restaure automatiquement les paquets NuGet de sorte que la packages n'a pas besoin d'être inclus dans le dépôt de code source. Bien.

Cependant, cette commande ajoute une nouvelle .nuget et il y a un binaire, NuGet.exe. Celui-ci peut également être recréé automatiquement par Visual Studio et il ne semble donc pas correct de l'ajouter au contrôle de version. Cependant, sans ce dossier, Visual Studio ne pourra même pas charger la solution correctement.

Comment gérez-vous ce problème ? Ajouter .nuget au contrôle de source ? Exécuter une ligne de commande script avant d'ouvrir la solution ?

47voto

Gan Points 1181

La réponse de @Richard Szalay est correcte - vous n'avez pas besoin de commettre nuget.exe. Si, pour une raison quelconque, Visual Studio ne télécharge pas automatiquement le fichier nuget.exe, assurez-vous que les paramètres suivants sont définis vrai dans le nuget.targets fichier :

<!-- Download NuGet.exe if it does not already exist --> 
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>

Fermez la solution VS, rouvrez-la et construisez-la. Visual Studio devrait maintenant télécharger nuget.exe automatiquement.

22voto

Borek Points 5459

Según este hilo Le dossier .nuget doit faire l'objet d'un contrôle de version.

20voto

Richard Szalay Points 42486

Vous devez vous engager .nuget\nuget.targets mais pas nuget.exe . Les cibles téléchargeront l'exe s'il n'existe pas, à condition de modifier DownloadNuGetExe a true dans nuget.targets

4voto

Chris Lively Points 59564

Bien que je n'aime pas l'idée d'ajouter des exe au contrôle de la source, je pense que le contrôle de la source devrait contenir tout ce qui est nécessaire pour ouvrir, construire et exécuter le projet.

Dans ce cas, il semble que le dossier .nuget soit une dépendance obligatoire. Il doit donc être sous contrôle de la source.

La seule question qui reste, et que vous devez étudier, est de savoir comment NuGet va réagir si ce dossier est marqué en lecture seule, ce que TFS fera une fois qu'il aura été archivé.


Mise à jour : J'ai fait un peu plus de recherches à ce sujet, car je n'ai jamais utilisé NuGet auparavant. http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html

Je dirais que ce que vous voulez probablement faire, c'est faire de NuGet une exigence qui doit être installée sur chaque poste de travail des développeurs.

En outre, vous devez placer dans le contrôle de la source le fichier batch nécessaire pour qu'un poste de travail soit prêt à commencer l'édition du projet. Le fichier batch va exécuter les commandes nécessaires pour obtenir et installer les paquets de dépendance.

Au-delà de cela, je dirais que vous devriez contacter directement NuGet pour leur demander comment, exactement, cela est censé fonctionner.

1voto

Si. Points 10543

Maintenant que nuget prend en charge la restauration des paquets, nous l'examinons de plus près.

Nous utilisons Subversion pour le contrôle de la source, et mes premières pensées sont que .nuget devraient être ajoutés à notre dépôt, mais ajoutés à l'aide de svn:externals pour qu'il pointe vers un seul endroit.

De cette façon, nous pouvons pousser automatiquement les nouvelles versions à tous les développeurs et projets. Pour les projets sur les branches de version, plutôt que sur HEAD, nous pouvons spécifier la révision de svn:externals si nous voulons laisser nuget tranquille.

Nous avons beaucoup de projets, ce qui signifie aussi qu'il ne faut pas faire double emploi. nuget.exe plusieurs fois dans le repo.

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