Мы используем шаблоны файлов, такие как MyApp.config.template и MyWeb.config.template со свойствами NAnt для битов, которые различны в разных средах. Таким образом, файл шаблона может выглядеть примерно так:
<MyAppConfig>
<DbConnString>${DbConnString}</DbConnString>
<WebServiceUri uri="${WebServiceUri}" />
</MyAppConfig>
Во время сборки мы генерируем все конфиги для разных сред, просто просматривая каждую среду в сценарии NAnt, изменяя значение свойств NAnt $ {DbConnString} и $ {WebServiceUri} для каждой среды (фактически это все устанавливается в один файл с разделами для каждой среды) и делает копию NAnt с включенной возможностью расширения свойств.
Потребовалось немного времени для настройки, но это окупило нас, по крайней мере, в десять раз за сэкономленное время, затрачиваемое на разные версии конфигурационных файлов.