Construisez le paquet NuGet automatiquement, y compris les dépendances référencées

je veux exécuter un local/interne référentiel de NuGet . Je pense que j'ai trouvé comment "réutiliser" les paquets NuGet existants en les incluant dans un projet fictif en utilisant NuGet et en scannant le fichier de paquet à grab my locally-cached .nupkg files , mais...

comment créer un paquet nuget ( .nupkg ) à partir d'un projet, incluant automatiquement toutes dll dépendances et pas seulement ceux attrapés via NuGet?

spécifiquement:

  1. créer une solution
  2. Ajouter un nouveau projet
  3. Ajouter des références à divers .dll fichiers/d'autres projets <-- c'est la partie manquante
  4. Ajouter les packages NuGet via le gestionnaire de paquets / cmdline / whatever
  5. quelque chose crée automatiquement le .nupkg

D'après ce que j'ai trouvé, vous êtes censé faire des choses comme

  • éditez manuellement votre fichier .csproj pour ajouter <BuildPackage>true</BuildPackage> pour inclure les dépendances
  • créer manuellement un fichier .nuspec et manuellement lister vos dépendances ( similaire ? )
  • exécuter manuellement nuget pack sur votre .nuspec fichier

mais tout est Manuel, ce qui est stupide. Même les solutions semi-automatiques sont encore maladroites ou à moitié manuelles:

je me contenterai de quelque chose qui crée automatiquement un manifeste .nuspec à partir des références du projet. Puis théoriquement que + l'événement nuget peut être regroupé dans un paquet build-project / nuget, ce que je veux vraiment voir.

39
demandé sur Community 2013-04-23 19:38:38

3 réponses

Votre point #3 ( Ajouter des références à divers .fichiers dll/autres projets <-- c'est la partie manquante ) contient vraiment deux problèmes différents: (1) ajouter des références à divers fichiers dll, et (2) ajouter des références à d'autres projets dans la même solution.

nombre (2) ici a obtenu un certain soutien ajouté à partir de NuGet 2.5 . Vous pouvez ajouter une option pour inclure des références à d'autres projets dans la même solution lors de la création d'un Package NuGet pour un projet:

nuget pack projectfile.csproj -IncludeReferencedProjects

si projectfile.csproj fait référence à d'autres projets de votre solution qui sont également exposés sous forme de paquets NuGet, les paquets NuGet de ces projets seront ajoutés sous forme de dépendances. S'il fait référence à des projets dans votre solution que ne ne s'expose pas comme des paquets NuGet, leurs dlls seront inclus dans ce paquet NuGet.

comme pour (1), si vous vous trouvez à ajouter souvent des dlls à votre projets qui ne sont pas disponibles sous forme de paquets NuGet, vous pouvez simplement créer vos propres paquets NuGet (internes) avec ces fichiers. Si vous ajoutez ensuite ces dlls sous forme de paquet NuGet au lieu des fichiers directement, Ce paquet NuGet sera une dépendance dans le paquet NuGet de votre projet.

46
répondu Nailuj 2013-04-30 22:43:12

pour les autres Googleurs, vous pouvez utiliser ceci si vous utilisez le NuGet.fichier cible pour lancer le paquet NuGet:

<Target Name="PrePackage" BeforeTargets="BuildPackage">
  <PropertyGroup>
    <BuildCommand>$(BuildCommand) -IncludeReferencedProjects</BuildCommand>
  </PropertyGroup>
</Target>
3
répondu John Gietzen 2015-04-21 18:14:50

regardez ça!

la solution que j'ai trouvée est une extension pour Visual Studio: https://visualstudiogallery.msdn.microsoft.com/fbe9b9b8-34ae-47b5-a751-cb71a16f7e96/view/Reviews

il vous suffit d'ajouter un nouveau projet appelé paquet Nuget NuGet Package

alors vous ajoutez intéressant vos projets à des références et BOOOM !! Toutes les dépendances et les répertoires de fichiers sont automatiquement ajouté. Si vous souhaitez modifier les données NuSpec, cliquez sur le bouton droit de la souris et allez à Propriétés, ensuite modifier ce que vous voulez. NUSPEC et nupkg générés seront dans le dossier obj de votre nouveau projet. J'espère que ça aide ;).

1
répondu Przemysław Kamiński 2018-02-21 09:11:20