2009-06-24 14 views

Répondre

4

Je ne pense pas que ce soit la solution la plus élégante, mais ce que nous avons fait avant est, la création d'un dossier dans la solution, et un fichier texte appelé placeholder.txt ou quelque chose de similaire, et la définition des propriétés du fichier texte à inclure dans la construction. Le résultat est un dossier dans lequel vous voulez qu'il contienne un fichier que vous ne voulez pas. Nous supprimons ensuite le fichier placeholder.txt avant de le compresser, le tout dans le script de construction.

Pas élégant mais il fait le travail pour notre scénario. MSBuild ne récupère pas les dossiers vides lors de la création d'éléments.

1

Pour copier simplement les dossiers vides que vous pouvez utiliser une tâche exec pour appeler RoboCopy. Vous pouvez spécifier l'argument/MIR qui reflètera l'arbre entier que vous essayez de copier, y compris les dossiers vides.

Exemple:

<Exec Command="robocopy &quot;$(SourceLocation)\&quot; &quot;$(TargetLocation)\&quot; /MIR" IgnoreExitCode="true" /> 

De même, vous pouvez utiliser une tâche exec pour appeler un utilitaire de compression qui a une interface de ligne de commande pour obtenir le zip avec des dossiers vides.

0

Il peut être un peu difficile, mais je pense que cela fonctionne si tous sont dans une racine commune vos fichiers et dossiers et vous zip dossier racine sans utiliser des caractères génériques (juste en utilisant « »):

<PropertyGroup> 
    <SourcePath>.\path\to\rootFolder</SourcePath> 
    <FinalZipFileName>.\path\to\destination\myzip.zip</FinalZipFileName> 
</PropertyGroup> 

<Target Name="MyApplicationZip" > 
    <Zip ZipFileName="$(FinalZipFileName)" WorkingDirectory="$(SourcePath)" Files="$(SourcePath)\." ZipLevel="9" /> 
</Target>