Our development group has implemented a "passbyref" extension to the NAnt task, which essentially allows the task to modify selected property values, and have those modified property values available to the calling client. This is comparable to passing parameters by reference in C# code. A snippet from a build file looks like:
<nant target="debug" inheritall="true" passbyref="foo bar"/>
<!-- Use modified foo and bar properties. -->
If this capability is suitable for inclusion in the standard Nant task, we can send in a patch for more detailed review.