2011-12-19 9 views
1

Моя пользовательская задача NAnt основана на определенном наборе файлов. Он считается определяемым по времени выполнения задачи. Я хотел бы убедиться, что набор файлов был определен до его использования. Я думаю о чем-то подобном property::exists('property').Как определить, установлен ли набор файлов?

Мне не удалось найти соответствующую функцию. Возможно ли с NAnt (или NAntContrib) из коробки?

+0

Как правило, задачи не должны «зависеть» от наборов файлов/свойств, но принимать четкие параметры. Набор файлов не нуждается в повторной декларации, поскольку он может быть включен с помощью простой ссылки на refid. – skolima

+0

Не уверен, что я вас правильно понимаю. Я ссылаюсь на набор файлов с refid, но если набор файлов не определен где-то, он будет снимать с ошибкой «undefined». –

+0

BTW. У меня проблемы с попыткой передать наборы файлов в качестве параметров. Кажется, NAnt не может развернуть его обратно в набор файлов в задаче, рассматривая его как строковый литерал. Это что-то известно? Или я просто попадаю в дыры, в которые попадают все новички? :) –

ответ

1

Как правило, задачи не должны зависеть от наборов файлов или свойств. Вместо этого они должны принимать явные параметры. Существующий набор файлов может быть повторно использован с использованием refid, поэтому в результате этого не происходит переоформления. Пример синтаксиса:

<myTask><filesetParameter refid="compileUs"/><myTask> 

Если указанный набор файлов не определен, NAnt будет сгенерировано исключение - это правильное (ожидаемое) поведение, так как построение не может продолжаться в этой точке.

Внутри вашей задачи, то свойство будет определяться следующим образом:

[TaskName("myTask")] 
public class MyTask : Task 
{ 
    [TaskAttribute("filesetParameter", Required = true)] 
    public FileSet FilesetParamter 
    { get; set; } 
} 
+0

Еще раз спасибо! Это полезно. –