Résumé:Nant: l'expansion des propriétés dans une chaîne
Comment développer une propriété avec la valeur "téléchargement \ $ {bulidmode} \ projet \ setup.msi" à "télécharger \ Debug \ projet \ setup.msi" si le buildmode de propriété contenait debug pour que je puisse l'utiliser comme fichier = « » partie de < copie>
Détail:
J'ai un peu d'une exigence pour pouvoir développer des propriétés dans une chaîne à Nant .
Par exemple, j'ai une cible qui copie du fichier A à B. A et B les deux viennent d'un simple fichier CSV deux champs que je suis itérer en utilisant
<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>
et la filelist.csv sera être
build\manifest.xml
solutiondirectory\setup-proj-directory\Release\setupproj.msi,ProductA\ProductA.msi
solutiondirectory\another-proj-dir\Release\setupproj.msi,ProductB\ProductB.msi
(La raison pour laquelle nous avons divisé ces derniers dehors est que nous écrivons des applications à plusieurs niveaux et le déploiement par MSI à chaque niveau - si un produit a plusieurs tous de msi construit avec les mêmes numéros de version)
Quoi qu'il en soit - Je veux changer cela en ce que je n'ai plus "Release" dans le fichier filelist.csv mais quelque chose comme $ {build.mode}. Je wrapper le code ci-dessus avec un
<foreach item="String" in="Release,Debug" delim="," property="build.mode">
....as above
</foreach>
et la propriété incorporée dans la chaîne dans le fichier est développée.
Je me suis cogné la tête contre un mur de briques pendant quelques heures, mais je n'arrive tout simplement pas à comprendre.
Merci
Un grand merci - fonctionne très bien - mais l'inconvénient est qu'il est ouvert un tout nouveau domaine de Nant dont je n'étais pas vraiment conscient. Toujours quelque chose de nouveau à apprendre! Alan. –
Oui, être capable d'utiliser des tâches/fonctions C# personnalisées dans NAnt est génial et pouvoir le faire en ligne sans créer un nouvel assemblage est encore mieux. –