Резюме:
Как развернуть свойство со значением "download \ $ {bulidmode} \ project \ setup.msi" до "download \ Debug \ project \ setup.msi", если свойство buildmode содержало отладку, поэтому я могу использовать его как file = "" часть
Деталь:
У меня есть требование к расширению свойств в строке в nant.
Например, у меня есть цель, которая копирует файл A в B. A и B оба получены из простого CSV-файла с двумя полями, который я перебираю, используя
<foreach item="Line" in="filelist.csv" delim="," property="source.file,target.file">
<property name="sourcefile" value="${path::combine(source.dir,source)}" />
<property name="targetfile" value="${path::combine(download.dir,destination)}" />
<echo message="Copy ${sourcefile} to ${targetfile}" />
<copy file="${sourcefile" tofile="${destination}" />
</foreach>
и filelist.csv будет
build\manifest.xml
solutiondirectory\setup-proj-directory\Release\setupproj.msi,ProductA\ProductA.msi
solutiondirectory\another-proj-dir\Release\setupproj.msi,ProductB\ProductB.msi
(Причина, по которой мы разделили их, заключается в том, что мы пишем многоуровневые приложения и внедряем MSI на каждом уровне - так, чтобы в одном продукте было несколько msi, созданных с одинаковыми номерами версий)
В любом случае - я хочу изменить это так, чтобы у меня больше не было «Release» в файле filelist.csv, а было что-то вроде $ {build.mode}. Я бы обернул вышеуказанный код с
<foreach item="String" in="Release,Debug" delim="," property="build.mode">
....as above
</foreach>
и свойство, встроенное в строку в файле, расширяется.
Я несколько часов бью головой о кирпичную стену, но просто не могу понять.
Спасибо