2010-08-26 11 views
6

Ich versuche, alle Dateien eines bestimmten Typs in ein Verzeichnis relativ zur Datei selbst zu verschieben, und ich frage mich, ob es möglich ist, MSBuild zu verwenden.Verschieben einer Datei in MSBuild mit relativem Pfad

Im Grunde verwende ich den Microsoft AJAX Minifier, um alle Javascript- und CSS-Dateien auf meiner Site zu minimieren. Dadurch werden .min.js- und .min.css-Dateien in das gleiche Verzeichnis wie die Javascript- und CSS-Dateien ausgegeben. Da meine Site über zahlreiche Skins verfügt, befinden sich JS- und CSS-Dateien in zahlreichen Verzeichnissen. Ich möchte in der Lage sein, eine Aufgabe hinzuzufügen, die nach dem AJAX-Minifier ausgeführt wird, der alle .min.js- und .min.css-Dateien nach/min/relativ zum Dateispeicherort verschiebt. Also würde /Skin1/somescript.min.js in /Skin1/min/somescript.min.js und/Skin2/somescript.min.js in /Skin2/somescript.min.js verschoben werden.

Die einzige Weise, die ich weiß, um eine Kopie/Move zu erreichen, erfordert Kenntnisse des absoluten Verzeichnisses (oder sollte ich Verzeichnis relativ zur Projektdatei sagen), aber ich kann nicht scheinen, eine Bewegung basierend auf einem relativen Verzeichnis zu finden zu der Datei, die ich bewege.

Kann dies getan werden?

Antwort

12
<CreateItem Include="wwwroot\**\*.min.js;wwwroot\**\*.min.css"> 
    <Output TaskParameter="Include" ItemName="FilesToMove" /> 
</CreateItem> 

<Move SourceFiles="@(FilesToMove)" DestinationFiles="@(FilesToMove->'wwwroot\%(RecursiveDir)\min\%(Filename)%(Extension)')"/> 

Angenommen, Sie verwenden die Move-Aufgabe von MSBuild community tasks. Wenn nicht, könnten Sie stattdessen die Originale kopieren und dann löschen.

+0

$ (RekursiveDir) huh? Super, danke! – hackerhasid