2010-08-26 3 views
6

Я пытаюсь переместить все файлы определенного типа в каталог по отношению к самому файлу, и мне интересно, возможно ли использование MSBuild.Перемещение файла в MSBuild с помощью относительного пути

В принципе, я использую Microsoft AJAX Minifier для минимизации всех файлов Javascript и CSS на моем сайте. Это выводит файлы .min.js и .min.css в тот же каталог, что и файлы Javascript и CSS. Поскольку у моего сайта много скинов, есть JS и CSS-файлы, расположенные в многочисленных каталогах. Я хочу иметь возможность добавить задачу, которая запускается после AJAX Minifier, которая перемещает все файлы .min.js и .min.css в/min/относительно местоположения файла. Итак, /Skin1/somescript.min.js переместится в /Skin1/min/somescript.min.js и /Skin2/somescript.min.js переместится в /Skin2/somescript.min.js.

Единственный способ, которым я знаю, чтобы выполнить копирование/перемещение, требует знания абсолютного каталога (или должен я указывать каталог относительно файла проекта), но я не могу найти способ перемещения на основе относительного каталога к файлу, в котором я двигаюсь.

Можно ли это сделать?

ответ

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

Предполагая, что вы используете задачу Move с MSBuild community tasks. Если нет, вы можете просто скопировать, а затем удалить оригиналы.

+0

$ (RecursiveDir) да? Удивительно, спасибо! – hackerhasid

Смежные вопросы