Création d'un package NuGet à partir de plusieurs projets dans une solution
J'ai une solution que je suis en train de travailler sur qui contient 4 projets de bibliothèque de classe (A
, B
, C
, D
). A
et B
pourrait être considéré comme le haut niveau des projets de la solution. Les deux A
et B
référence C
, et D
est le seul.
Ces quatre projets représentent un groupe de services que j'ai fait que gérer un flux de travail automatisé. Ils sont tous étroitement liés, et ne sera utilisée que dans un seul endroit (le gestionnaire de service) donc je ne veux pas de les diviser en différentes solutions.
Mon problème est que je veux créer un seul package NuGet qui contiendra tous les 4 bibliothèques, sans avoir à créer de toutes et de recueillir leurs Dll manuellement. Je sais que je pourrais techniquement de réaliser ceci par le fait d'avoir A
ou B
de référence, les autres projets, mais ce n'est pas une vraie relation et je pense qu'il devrait être évitée.
J'ai fait beaucoup de recherche sur ce problème et je ne peux pas trouver d'autre solution que de saisir manuellement la collecte de la Dll et la construction du paquet moi-même. Est-il un moyen pour obtenir le résultat que je veux à l'aide de NuGet caractéristiques/capacités?
NOTE: Dans le cas où les étiquettes ne pas le rendre clair, je suis actuellement à l'aide de VS2010 avec un TeamCity serveur de build. Dans le cas où elle est pertinente, je suis également en utilisant Git à travers une Cachette serveur.
MODIFIER: je viens de réaliser que cela pourrait être assez important de le mentionner. Ces projets font référence à d'autres packages NuGet que j'ai besoin de marquer comme dépendances.
- Êtes-vous à l'aide de la TeamCity NuGet Pack étapes de génération?
- Je n'ai pas le projet mis en place dans TeamCity pourtant, à cause de ce problème. La version live de cette solution est en fait un projet unique et il est sur le SVN/CC.NET maintenant.
Vous devez vous connecter pour publier un commentaire.
Vous devez définir votre propre nuspec manifeste. Vous pouvez afficher la liste contenant les assemblages en
files
section:Pour plus de détails, lire NuSpec de référence.
Puis de référence que le fichier nuspec dans NuPack étape de génération au lieu de proj.
Si vous avez téléchargé NuGet.exe
Vous pouvez exécuter:
nuget pack Myproject.csproj -IncludeReferencedProjects
et cela devrait inclure l'ensemble de vos projets. Voici une note de la NuGet docs:Si le projet fait référence à d'autres projets, vous pouvez ajouter les projets référencés dans le cadre du paquet, ou en tant que dépendances avec -IncludeReferencedProjects option. Ceci est fait de manière récursive. Par exemple, supposons que vous avez projet A. csproj, les références B. csproj et C. csproj, tandis que le B. csproj références D. csproj & E. csproj, C. csproj références F. csproj & G. csproj. Puis, lorsque vous exécutez:
le package généré contiendra les fichiers de projets B, C, D, E, F & G, en plus des fichiers de projet A.
Si un projet référencé correspond à un fichier nuspec avec le même nom, alors que le projet référencé est ajouté comme une dépendance à la place. En utilisant le même exemple, supposons maintenant il y a la fiche C. nuspec dans le même répertoire que le fichier de projet C. csproj. Lorsque vous exécutez:
le package généré contiendra les fichiers de projets B, D, E, en plus des fichiers à partir d'Un projet, et que le paquet a une dépendance sur C.
Voir aussi le Référence en ligne de commande.
c'est probablement ce qui permettra de résoudre ce exact:
nuget.exe pack proj.csproj -IncludeReferencedProjects
vous pouvez le voir:
Créer de package nuget pour une solution avec plusieurs projets