2

有没有办法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 扩展的新手,所以我不知道这是否是一个有效的问题,或者我是否应该以不同的方式处理这个问题。

4

1 回答 1

2

好问题汤姆。抽象基类FunctionSetBase有一个名为Project的属性,您可以从Bar函数访问该属性。但是,我注意到 Bar 函数被声明为静态的,这并不总是必要的(但没有错)。

以下在 NAnt 世界中应该是完全合法的:

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

你看有什么问题吗?

于 2008-11-17T21:48:36.420 回答