87 votes

Archiver des paquets de NuGet dans le contrôle de version?

Avant NuGet, il était communément admis de suivre de manière exemplaire toutes les DLL externes utilisées dans un projet. Généralement, dans un répertoire Libs ou 3rdParty .

Lorsque je travaille avec NuGet, suis-je censé archiver le répertoire packages ou existe-t-il un moyen pour MSBuild de télécharger automatiquement les packages nécessaires à partir du flux de nuget?

68voto

Edward Wilde Points 5808

Pas de

Depuis que cette question a été posée il y a maintenant un flux de travail facile à utiliser NuGet sans la validation des paquets de contrôle de code source

À partir de votre gestionnaire de paquets de la console, vous devez installer le 'NuGetPowerTools':

Install-Package NuGetPowerTools

Ensuite pour activer vos projets à l'appui de pack de restauration, vous devez exécuter une autre commande:

Enable-PackageRestore

Maintenant, vous êtes prêt à s'engager de votre base de code sans le dossier packages. La commande précédente changé les fichiers de votre projet, de sorte que si des paquets sont manquants, ils sont automatiquement téléchargés et ajoutés.

Source

À l'aide de NuGet sans commettre des paquets de contrôle de code source

30voto

Haacked Points 31070

Oui. Envisager le répertoire "packages" pour être équivalent à celui de votre "libs" répertoire que vous avez mentionné dans votre question. C'est l'approche que j'ai personnellement prendre avec mes projets OSS.

Nous étudions les caractéristiques qui permettraient de MSBuild pour télécharger automatiquement les paquets nécessaires, mais qui n'a pas été mis en œuvre (comme de NuGet 1.1).

Je pense que certaines personnes peuvent avoir déjà mis en œuvre ces fonctionnalités sur leur propre, mais notre plan est de chercher à avoir cette fonctionnalité intégrée à NuGet 1.2 ou 1.3, espérons-le.

5voto

Scott Weinstein Points 11404

Depuis que j'ai posé la question, j'ai adopté l'approche suivante afin de ne pas avoir à vérifier le répertoire toplovel Packages .

Dans un fichier de niveau supérieur build.msbuild:

 <Target Name="NuGet">
    <ItemGroup>
       <NuGetPackage Include="*\packages.config" />
    </ItemGroup>
    <Exec Command='libs\NuGet.exe install "%(NuGetPackage.FullPath)" -o Packages'  />

    <!-- optional for project that has JavaScript content -->
    <CreateItem Include="Packages\*\Content\Scripts\*">
       <Output TaskParameter="Include" ItemName="NuGetJSFiles"/>
    </CreateItem>
    <Copy SourceFiles="@(NuGetJSFiles)" DestinationFolder="MainProj\Scripts\" OverwriteReadOnlyFiles="true" SkipUnchngedFiles="true" />
    <Delete Files="MainProj\Scripts\.gitignore" />
    <WriteLinesToFile File="MainProj\Scripts\.gitignore" Lines="%(NuGetJSFiles.Filename)%(NuGetJSFiles.Extension)" /
    <Delete Files="@(PostNuGetFiles)" />
</Target>
 

Dans chaque fichier project.csproj

 <Target Name="BeforeBuild">
    <Error Condition="!Exists('..\Packages\')" Text="You must run &gt; msbuild build.msbuild to download required NuGet
Packages" />

    <!-- optional for project that has JavaScript content -->
   <ReadLinesFromFile File="Scripts\.gitignore">
     <Output TaskParameter="Lines" ItemName="ReqJSFiles" />
   </ReadLinesFromFile>
   <Message Text="@(ReqJSFiles)" />
   <Error Condition="!Exists('Scripts\%(ReqJSFiles.Identity)')" Text="You must run &gt; msbuild build.msbuild to download required NuGet JS Package - Scripts\%(ReqJSFiles.Identity)" />
 </Target>
 

4voto

Pawel Krakowiak Points 3494

Je me rends compte de la réalité a été différente lorsque cette question a été posté et répondu, mais heureusement, la réponse a un peu changé. Il est maintenant possible d'utiliser NuGet pour télécharger les dépendances via MSBuild à l'aide d'un Pré-événement de construction. 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és et/ou mis à jour sur construire. Il peut une solution de contournement, mais il semble assez décent. Consultez le blog suivant pour les détails: http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html

3voto

Matt W Points 75

À compter du 20/09/13, il y a quelque chose appelé "Nuget Restore". En fait, vous n'avez pas besoin de vérifier le dossier du paquet si vous souhaitez le faire. (Surtout si vous utilisez DVCS)

Découvrez ceci: Utiliser NuGet sans engager de paquet dans le contrôle de code source http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

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