Короче говоря, моя проблема:NAnt: Как загрузить внешний NAnt сценариев внутри пользовательских задач
Как загрузить сценарий NAnt в сторону пользовательских задач, и выполнить его?
Подробное описание:
В нашем текущем билде проекта, нам необходимо выполнить внешние программы. Внешние программы должны быть расположены до начала сборки. (Сог это занимает так много времени looong)
То, что я хочу, чтобы иметь какой-то модуль NAnt, как те FindXXX.cmake модули в CMake, так что я могу иметь такие модули, как:
<?xml version="1.0"?>
<project name="FindSQLServerCore" default="FindSQLServer">
<target name="FindSQLServer">
<module>
<path>
<pathelement dir="C:\Program Files\Microsoft SQL Server\100\Tools\Binn" />
<pathelement dir="C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn" />
</path>
<files>
<file name="SQLCmd.exe" />
</files>
</module>
</target>
</project>
И когда мне нужно включают SQLServer в моем сценарии сборки, я могу сделать:
<find module="SQLServer" required="true" />
мой способ сделать это путем создания 2 пользовательских задач: FindTask & ModuleTask.
FindTask собирается найти FindXXX.include и загрузить его в текущий проект NAnt.
ModuleTask собирается найти указанный файл под заданным путем и вернуть результаты.
Но я не могу найти способы создания & выполнять задачи NAnt, загружая скрипт сборки в FindTask. Объект Project.CreateTask (XmlNode) принимает только тот узел, который уже загружен, но не из недавно загруженного XML.
Есть ли способ создать задачу, загрузив скрипт сборки внутри настраиваемой задачи? Или мой способ делает это стиль NAnt? Какие-нибудь лучшие способы достижения той же цели?
PS. Вы можете спросить, почему бы просто не использовать
<include file="FindSQLServer.include" />
причина, почему я не делаю это таким образом, я хочу передать параметр требуется в, но не установить его в качестве переменной и передать его.
Вы можете получить расширение NANT здесь: [email protected]