NAnt扩展功能,项目对象
问题描述:
有没有办法像扩展任务一样从NAnt扩展功能访问Project
对象?NAnt扩展功能,项目对象
在这个例子中,我想用Bar
函数内BaseDirectory
属性:
[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?
}
}
我是新来的恶性扩展,所以我不知道这是不是连一个有效的问题,或者如果我应该以不同的方式解决问题。
答
伟大的问题汤姆。抽象基类FunctionSetBase,有一个属性叫项目,你可以从条函数中访问。但是,我注意到Bar函数被声明为静态的,这并不总是必要的(但不是错误的)。
下应该是完全合法的恶性世界:
Function("bar")]
public string Bar(string name)
{
string baseDirectory = Project.BaseDirectory;
return baseDirectory;
}
你看到什么问题吗?
完美的作品,谢谢!对于任何感兴趣的人:FooFunctions的构造函数在每次调用(非静态)Bar方法时调用。 – 2008-11-19 16:06:29