2013-02-25 6 views
2

Я пишу скрипт MsBuild для обработки файлов конфигурации и преобразования. Я создаю коллекцию файлов .Dev.config таким образом:строка заменить на сбор файлов

<ItemGroup> 
    <DevConfigFiles Include="..\Source\**\*.Dev.config"/> 
</ItemGroup> 

Это прекрасно работает. Выполнение задачи против% (DevConfigFiles.Identity) дает мне то, что я ожидаю. Я хотел бы взять эту коллекцию и создать соответствующую коллекцию с теми же именами файлов, но с заменой «.Dev.config» на «.config».

Я не могу понять синтаксис MsBuild, чтобы это сделать. Каков наилучший способ сделать это?

ПРИМЕЧАНИЕ: Я бы рассмотрел альтернативные методы получения списка файлов * .config и соответствующего списка файлов * .Dev.config, но на самом деле я хотел бы понять синтаксис MsBuild для вызова строковых функций по коллекции , Это та часть, которая меня отключает.

ДРУГОЕ ПРИМЕЧАНИЕ: Я не могу использовать метаданные% (Extension) в этом случае, потому что он не удаляет часть «.Dev» строки. Он считает, что часть имени файла.

ответ

2

Аналогичный вопрос, где OP хочет взять коллекцию файлов и скопировать их с именем, основанным на исходной строке.

MSBUild: Copy files with a name based on the original (following a pattern)

+0

Интересно. Я предполагаю, что что-то подобное может решить мое дело. Экспериментирование ... – RationalGeek

+0

Yup. Это сработало. Немного запутанный, но я возьму его. :-) – RationalGeek

+0

@RationalGeek Это было новое для меня. Выглядит немного как вызов функций в xslt. Это означает, что у вас есть какая-то библиотека .net, открытая для вас, поэтому вам не нужно спешить и написать задачу, чтобы сделать что-то простое. – Bronumski