task for NAnt
Essentially, you write a new task like this:
…and then you call it like this:
Any parameter passed to the defined task is available as this.foo inside the defined task. I’ve found it useful when you don’t want to write a task in C#, perhaps because all you’re doing is calling a bunch of other NAnt tasks.