Avant NuGet, il était communément admis de «meilleure pratique» d'archiver toutes les DLL externes utilisées sur un projet. Généralement dans un répertoire Libs
ou 3rdParty
.
Lorsque je travaille avec NuGet, suis-je censé archiver le packages
répertoire ou existe-t-il un moyen pour MSBuild de télécharger automatiquement les packages nécessaires à partir du flux nuget?
version-control
msbuild
nuget
Scott Weinstein
la source
la source
Réponses:
Non
Depuis que cette question a été posée, il existe maintenant un flux de travail facile pour utiliser NuGet sans valider les packages dans le contrôle de code source
À partir de la console de votre gestionnaire de packages, vous devez installer le 'NuGetPowerTools' :
Ensuite, pour permettre à vos projets de prendre en charge la restauration du pack, vous devez exécuter une autre commande:
Vous êtes maintenant prêt à valider votre base de code sans le dossier packages. La commande précédente a modifié les fichiers de votre projet afin que, si des packages manquent, ils soient automatiquement téléchargés et ajoutés.
La source
Utiliser NuGet sans valider les packages dans le contrôle de code source
la source
Enable NuGet Package Restore
. Consultez la documentation .Oui. Considérez que le répertoire "packages" est équivalent à votre répertoire "libs" que vous avez mentionné dans votre question. C'est l'approche que j'adopte personnellement avec mes projets OSS.
Nous étudions des fonctionnalités qui permettraient à MSBuild de télécharger automatiquement les packages nécessaires, mais cela n'a pas été implémenté (à partir de NuGet 1.1).
Je pense que certaines personnes ont peut-être déjà implémenté de telles fonctionnalités par elles-mêmes, mais notre plan est de chercher à intégrer cette fonctionnalité à NuGet 1.2 ou 1.3, espérons-le.
la source
Malgré toutes les réponses ici, c'est toujours une solution horrible de ne pas avoir toutes vos dépendances sous "une sorte" de contrôle de version.
Pour GIT, cela signifierait GIT-LFS.
L'épisode récent avec NPM montre pourquoi: si le référentiel Internet dont vous dépendez tombe en panne, n'est pas disponible, etc., alors vous êtes foutu n'est-ce pas?
Vous n'êtes plus en mesure de créer votre contenu - et donc pas en mesure de livrer.
la source
npm
cassé car il n'a pas désélectionné les paquets, il les a en fait supprimés. NuGet ne fait pas cela; si à un moment donné vous ne pouvez pas accéder à NuGet, quelque chose ne va vraiment pas. Je ne pense pas que stocker une craptonne de dépendances dans git soit une bonne solution: verrouillez simplement vos dépendances à une version spécifique et ayez un miroir entre vous et sur Internet si cela vous intéresse.Depuis que j'ai posé la question, j'ai mis en place l'approche suivante pour ne pas avoir à vérifier dans le répertoire toplovel Packages .
Dans un fichier build.msbuild de niveau supérieur:
Dans chaque fichier project.csproj
la source
Je me rends compte que la réalité était différente lorsque cette question a été initialement publiée et répondue, mais heureusement, la réponse a un peu changé. Il est désormais possible d'utiliser NuGet pour télécharger des dépendances via MSBuild à l'aide d'un événement Pre-Build. Vous n'avez pas besoin de mettre le dossier packages dans votre référentiel de code, toutes les dépendances seront téléchargées et / ou mises à jour lors de la construction. C'est peut-être une solution de contournement, mais cela semble assez décent. Consultez l'article de blog suivant pour plus de détails: http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html
la source
À partir du 20/09/13, il y a quelque chose qui s'appelle "Nuget Restore". Vous n'avez en fait pas à archiver le dossier du package si vous souhaitez le faire. (Surtout si vous utilisez DVCS)
Vérifiez ceci: Utiliser NuGet sans valider les packages dans le contrôle de code source http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
la source
Ce message est devenu très obsolète. La réponse est toujours NON, mais la solution a changé. À partir de NuGet 2.7+, vous pouvez activer la restauration automatique des packages sans inclure le fichier NuGet.exe dans votre source (ce n'est pas souhaitable pour le moins) et si vous utilisez un DVCS moderne, vous pouvez ignorer le dossier packages. Si vous avez besoin de personnalisations spéciales, vous pouvez créer un fichier nuget.config dans la racine de la solution.
http://docs.nuget.org/docs/reference/package-restore
De plus, avec le nouveau format csproj, vous pouvez également éviter les fichiers nuget.config supplémentaires, car ils sont désormais intégrés. Veuillez consulter cet article qui explique mieux cela:
Le dossier .nuget doit-il être ajouté au contrôle de version?
la source