В Nant я хотел бы иметь возможность извлечь фамилию каталога в пути. Например, у нас есть путь 'c: \ my_proj \ source \ test.my_dll \'
Я хотел бы перейти по этому пути и извлечь 'test.my_dll'
Есть ли способ легко сделать это?
Вы можете сделать это с помощью существующих строковых функций NAnt. Просто немного некрасиво ...
${string::substring(path, string::last-index-of(path, '\') + 1, string::get-length(path) - string::last-index-of(path, '\') - 1)}
Можно найти родительский каталог вашего пути, а затем использовать строку замены, чтобы найти нужную папку:
<property name="some.dir" value="c:\my_proj\source\test.my_dll" /> <property name="some.dir.parent" value="${directory::get-parent-directory(some.dir)}" /> <property name="directory" value="${string::replace(some.dir, some.dir.parent + '\', '') }" />
Возможно, вы захотите попробовать новую функцию, добавленную к nant 0.93 (хотя все еще в ночных сборках) -
directory::get-name(path)
Это вернет имя каталога, указанного в path.
path
См. nant help
Расширение на Стива К:
<script language="C#" prefix="path" > <code> <![CDATA[ [Function("get-dir-name")] public static string GetDirName(string path) { return System.IO.Path.GetFileName(path); } ]]> </code> </script> <target name="build"> <foreach item="Folder" in="." property="path"> <echo message="${path::get-dir-name(path)}" /> </foreach> </target>
Нет. Вам нужно написать пользовательское задание для чего-то подобного.
См. Задачу script . Вы можете написать собственный код на C # или в любом другом месте и вернуть значение, которое вы можете присвоить свойству.