2009-06-24 7 views

Antwort

4

Ich glaube nicht, dass dies die eleganteste Lösung, aber was wir haben, bevor getan wird, um einen Ordner in der Lösung zu schaffen, und eine Textdatei placeholder.txt oder etwas ähnliches genannt, und das Festlegen der Eigenschaften der Textdatei, die in den Build aufgenommen werden soll. Das Ergebnis ist ein Ordner, in dem Sie eine Datei enthalten möchten, die Sie nicht möchten. Wir löschen dann die Datei placeholder.txt, bevor wir sie zusammenfügen, alles innerhalb des Build-Skripts.

Nicht elegant, aber es macht den Job für unser Szenario.

1

Für nur leere Ordner kopieren können Sie eine exec Aufgabe verwenden RoboCopy zu nennen. Sie können das Argument/MIR angeben, das den gesamten Baum, den Sie kopieren möchten, spiegelt, einschließlich leerer Ordner.

Beispiel:

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

Ebenso können Sie eine exec Aufgabe verwenden, um ein Komprimierungsprogramm aufzurufen, die eine Kommandozeilen-Schnittstelle die Zip mit leeren Ordner zu erreichen hat.

0

Es kann ein wenig schwierig sein, aber ich denke, es funktioniert, wenn alle Ihre Dateien und Ordner in einer gemeinsamen Wurzel sind und Sie zip, dass die Stammordner ohne Platzhalter zu verwenden (nur mit ‚‘):

<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>