NuGet pack pour l’continuous integration TFS

J’essaie de faire en sorte que notre processus de génération de TFS génère des packages NuGet à partir des projets de notre solution. Notre objective est de créer une source de paquet privée, de sorte que tous les autres produits internes puissent télécharger / mettre à jour le framework en utilisant NuGet.

Jusqu’ici, nous avons le processus de construction en cours d’exécution (pendant longtemps) et la gestion de versions de nos bibliothèques, et la seule chose qui rest à faire est de ” compresser tous les projets”.


Ce que j’ai essayé jusqu’à présent:

  1. nuget spec * .csproj, puis nuget pack * .nuspec;
  2. nuget spec * .dll, puis nuget pack * .nuspec;
  3. nuget pack * .csproj directement (pas de fichier .nuspec);

Tous semblent fonctionner, mais tous semblent échouer sur les étapes dont j’ai réellement besoin pour réussir.

Ce que je reçois réellement en effectuant les étapes mentionnées:

  1. Aucune dépendance¹ répertoriée, aucune référence² répertoriée;

  2. Aucune dépendance¹ répertoriée, aucune référence² répertoriée, toutes les dll du répertoire sont regroupées dans le même fichier .nupkg (sans utiliser -IncludeReferencedProjects);

  3. (Le meilleur jusqu’à présent) Certaines dépendances¹ sont répertoriées, pas de référence², seule la dll du projet est dans le dossier lib du fichier .nupkg.

¹: Par dépendance, j’entends les dépendances de NuGet, les packages de NuGet
²: Par référence, je veux dire les références de projets de solutions.


Exemple de scénario:

Solution1.sln
– ProjectA
– ProjectB

ProjectA a une référence de projet à ProjectB. Ce que je compte faire sur le .nuspec généré:

   ProjectA <- OK 1.2.0.0 < - OK ProjectA <- OK My Company <- OK My Company <- OK false Description OK   <<<<<<---- NOT HAPPENING!    

Certaines dépendances de nuget sont répertoriées, mais pas toutes (même lorsqu’elles se trouvent dans le fichier packages.config du projet référencé). Par exemple: j’ai un projet qui dépend de 4 autres packages NuGet, seuls 2 sont répertoriés comme dépendances du fichier .nuspec généré.


Une information important:

  • Chaque projet a son propre packages.config, comme NuGet le construit;
  • Le dossier de la solution contient le dossier des packages, avec tous les packages référencés;
  • Déjà essayé Nugetter (XAML cassé sur VS 2012.3 et TFS 2012, ne peut pas l’ouvrir)
  • Déjà essayé ceci n’inclut pas non plus correctement les dépendances et les références;
  • La restauration du package de solution est activée (nous en avons besoin pour éviter de stocker les packages sur TFS).

Ce dont j’ai besoin:

  • Automatisez le processus de pack pour comstackr chaque csproj, y compris toutes les références et les dépendances du fichier .nuspec, afin que toutes soient correctement chargées lors de l’installation.

Des questions similaires que j’ai examinées:

NuGet: la commande pack n’inclut PAS les dépendances de nuget
Nuget pack uniquement, y compris les dépendances de certains projets
Pourquoi nuget n’inclut-il pas le projet référencé lors de l’emballage?

Cela s’avère être un simple problème de chemin. Les références et les dépendances n’étaient pas correctement ajoutées car j’exécutais la commande à partir d’un répertoire de travail différent.

En plus de cela, l’utilisation de -IncludeReferencedProjects était nécessaire pour append correctement tout ce qui était nécessaire.

Après cela, le processus de construction utilisant Powershell s’est terminé avec succès et tout s’est déroulé comme prévu =)

La commande pack dispose d’une option permettant d’inclure les références de projet à spécifier: http://docs.nuget.org/docs/reference/command-line-reference#Pack_Command_Options .

Vous devrez cibler le fichier csproj et je vous recommande de créer manuellement un fichier nuspec.