web-dev-qa-db-fra.com

Comment ajouter un dossier à un fichier nuspec

Donc, j'essaie en fait de regrouper un projet de site Web (pas une application Web, donc pas de fichier csproj) dans un package NuGet prêt à être utilisé par Octopus, mais je tombe sur un mur de briques après un autre ..

J'ai cherché à utiliser OctoPack mais il ne prend pas en charge les projets de site Web uniquement les projets d'application Web.

J'essaie maintenant de trouver un moyen d'ajouter un dossier (dans mon cas, un site Web) dans un package Nuget mais Nuget ne le permet pas via la ligne de commande, n'est-ce pas? Il nécessite également un fichier .csproj!

J'ai également essayé de créer les fichiers de spécifications NuGet et de les transmettre dans un dossier, mais ce n'est pas possible?

Pour le moment, je devrai peut-être utiliser l'explorateur de packages NuGet, mais je veux en faire un script.

J'ai regardé cette question mais ne semble pas gérer mon scénario Puis-je créer un paquet nuget sans fichier de projet

Est-ce que quelqu'un sait comment ajouter au mieux un dossier à un package NuGet via la ligne de commande!?

25
Lee Englestone

Je ne connais pas OctoPack, mais avec nuget.exe, le packaging se fait en deux étapes:

  1. Soit créer un .nuspec manuellement, soit en générer un à partir d'un .csproj ou d'un assembly existant (voir nuget spec in les documents ).
  2. Appel nuget pack avec le .nuspec créé à l'étape précédente comme paramètre.

Puisque vous n'avez pas de .csproj, vous êtes bloqué en créant manuellement le .nuspec (ou avec un outil GUI comme NuGet Package Explorer ).

Vous pouvez tout lire sur la façon de créer un fichier .nuspec dans le Référence Nuspec , en particulier la section sur Spécification des fichiers à inclure dans le package .

Si vous souhaitez inclure un dossier (récursivement?) Dans le package, vous devez ajouter quelque chose comme ceci au XML:

<files>
  <file src="bin\Release\**\*.*" target="content" /> 
</files>

Cela prendra tous les fichiers et sous-dossiers (récursifs) du bin\Release et placez-les dans le dossier content du package NuGet.

Je n'ai aucune idée du format qu'OctopusDeploy attend dans les packages, mais c'est ainsi que vous incluez un dossier dans le package.

[~ # ~] modifier [~ # ~] : Il semble y avoir une documentation à ce sujet dans le OctoPack README .

41
khellang