Я бы предложил использовать совершенно разные конфигурационные файлы для каждой среды (prod, test, staging в нашем случае). В зависимости от сборки вы можете просто использовать требуемый конфиг, без проблем, суеты. Hanselmen имеет пример того, как это сделать в Visual Studio, и если вы прочитали первый комментарий, Фил Хэк получил работу с NAnt .
<target name="configMerge">
<copy file="${sourcefile}"
tofile="${destinationfile}" overwrite="true">
<filterchain>
<expandproperties />
</filterchain>
</copy>
</target>
Кроме того, если вы используете VS 2010, теперь вы можете использовать web.config transforms