2010-08-26 18 views
6

Estoy tratando de mover todos los archivos de un cierto tipo a un directorio relativo al archivo en sí y me pregunto si es posible usar MSBuild.Mover un archivo en MSBuild usando la ruta relativa

Básicamente, estoy usando el Microsoft AJAX Minifier para minificar todos los archivos Javascript y CSS en mi sitio. Esto genera archivos .min.js y .min.css en el mismo directorio que los archivos Javascript y CSS. Debido a que mi sitio tiene numerosas máscaras, hay archivos JS y CSS ubicados en numerosos directorios. Quiero poder agregar una tarea que se ejecute después del Minificador AJAX que mueve todos los archivos .min.js y .min.css a/min/relativos a la ubicación del archivo. Así /Skin1/somescript.min.js se movería a /Skin1/min/somescript.min.js y /Skin2/somescript.min.js se movería a /Skin2/somescript.min.js.

La única manera que conozco de realizar una copia/movimiento requiere conocimiento del directorio absoluto (o debería decir el directorio relativo al archivo de proyecto) pero parece que no puedo encontrar una manera de moverlo basado en un directorio relativo al archivo que estoy moviendo.

¿Se puede hacer esto?

Respuesta

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)')"/> 

Suponiendo que está usando la tarea Mover en MSBuild community tasks. De lo contrario, podría copiar y luego eliminar los originales en su lugar.

+0

$ (RecursiveDir) ¿eh? ¡Genial gracias! – hackerhasid

Cuestiones relacionadas