Функция расширения NAnt, Объект проекта - PullRequest
2 голосов
/ 12 ноября 2008

Есть ли способ получить доступ к объекту Project из функции расширения NAnt, как это можно сделать из задачи расширения?

В этом примере я хочу использовать свойство BaseDirectory внутри функции Bar:

[FunctionSet("foo", "Foo")]
public class FooFunctions : FunctionSetBase
{
    public FooFunctions(Project project, PropertyDictionary properties)
        : base(project, properties)
    {
        // When does this constructor gets called?
    }

    [Function("bar")]
    public static string Bar(string name)
    {
        return "Bar!"; // How to get at project.BaseDirectory?
    }
}

Я новичок в расширениях NAnt, поэтому я не знаю, является ли это даже верным вопросом или мне следует подойти к проблеме по-другому.

1 Ответ

2 голосов
/ 18 ноября 2008

Отличный вопрос, Том. Абстрактный базовый класс, FunctionSetBase , имеет свойство с именем Project , доступ к которому можно получить из функции Bar . Однако я заметил, что функция Bar объявлена ​​статической, что не всегда необходимо (но не неправильно).

Следующее должно быть полностью законно в мире NAnt:

Function("bar")]
public string Bar(string name)
{
    string baseDirectory = Project.BaseDirectory;
    return baseDirectory; 
}

Вы видите какие-либо проблемы?

...