8
votes

Msdeplement ne déploie pas de package zippé manuellement

Auparavant, je construirais et déploiement du projet Web à l'aide de Msbuild.exe

maintenant, je souhaite modifier certains fichiers avant de le déployer, donc je crée un package .zip à l'aide de MSBuild, puis décalez-le, modifiez certains fichiers, puis à nouveau. Et essayez de déployer à l'aide de MSDeploy. p>

Le problème est que celui-ci déploie un dossier vide fort>. Lorsque j'essaie de déployer un paquet .zip non modifié, cela fonctionne bien. P>

Après de longues heures de fouille, j'ai compris que le msdeploy ne supporte pas les packages, qui ont été zippés en utilisant autre que Windows Zip Archiver.

Comment connecter des fichiers à l'aide de Windows Zip Archiver en C # / F #? J'ai essayé d'utiliser system.io.compression.zipfile.createfromDirectory.createfromDirectory code>, mais msdeploy déploie toujours des dossiers vides. P>

Voici l'avertissement ce que je reçois, lors de la tentative de déploiement de l'emballage: p> xxx pré>

lorsque je désactive SkipInvalidsource code> règle, je reçois l'erreur suivante: p>

Error: (12/23/2014 6:56:44 PM) An error occurred when the request was processed on the remote computer.
Error: Object reference not set to an instance of an object.
   at Microsoft.Web.Deployment.DeploymentSyncEnumerable.<Create>d__0.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenNoOrder(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenNoOrder(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject)
   at Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable`1 syncPassId, String syncSessionId) at Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable`1 passId)
Error count: 1.


2 commentaires

J'ai le même problème


@Frederictorres J'ai fini par déployer un répertoire entier à l'aide de -Dest: ContentPath plutôt que sur un package zippé.


3 Réponses :


2
votes

n'utilisez pas l'archiveur zip. Vous devez appeler msdeploy.exe.

Exemple de fichier BAT: P>

msdeploy -help -dest
msdeploy -help -declareParam


0 commentaires

10
votes

J'ai eu ce problème exact. J'ai un tas de packages de msdeploy et j'ai besoin de mettre à jour certains des fichiers post-emballage, mais préparez-vous.

Si j'utilise MsDeploy Sync pour extraire les packages, les paramètres sont traités - ce n'est pas bon, ce ne sont que des espaces réservés jusqu'à ce que je sache quel environnement est ciblé. Donc, j'ai besoin de décompresser le colis, puis de faire les changements ... jusqu'à présent si bon.

Mais puis je le rezpez tout. Et puis ensuite, je reçois ce problème: Msdeploy ne traitera pas les dossiers contenus. Si j'utilise msdeploy pour traiter les fichiers extraits, je perds encore les paramètres ... ou plutôt ils sont traités prématurément à partir du fichier Paramters.xml. Grr.

la solution? Utilisez 7ZIP ... ou quelque chose à part de Standard Windows Zipper.

E.g. 7z.exe A -r c: \ déploie \ myPackage.zip c: \ extraitStuff \ *


1 commentaires

Notez la différence subtile dans l'exemple d'utilisation * (un simple astérisque et non astérisque)! Au moins lors de l'utilisation de 7za.exe au lieu de 7z.exe, vous devez utiliser * (et non astérisque d'astérisque), sinon l'archive créée ne fonctionnera pas avec le msdeploy, apparemment en raison des drapeaux de répertoire manquants, bien que l'archive semble identique sur la surface.



0
votes

La réponse de Dan Kendall m'a aidé à m'aider mais à la fin, je n'avais pas besoin d'utiliser 7ZIP. Je préfère ainsi parce que je n'ai pas besoin d'installer 7ZIP sur le serveur de construction.

La réponse était simple, je viens de passer d'utiliser zip à fichiers d'archive

 Entrez la description de l'image ici


1 commentaires

La tâche "Fichiers d'archives" utilise 7Z interne (sous Windows): GITUB.COM/MICROSOFT/AZURE-PIPELINES-TASKS/BLOB/MASTER/TASKS / ...