Какой бы путь вы ни выбрали, я думаю, что было бы полезно иметь понятие единого «источника правды» для вашей конфигурации.
Дублирование в порядке, если вам нужно предоставить конфигурацию для некоторых компонентов в их собственной специализированной форме.
Но чтобы сохранить здравомыслие, я думаю, вам следует постараться создать одно место, в котором вы установите всю конфигурацию, относящуюся к вашему приложению, а затем четко определенный механизм для преобразования этого в записи внутри Web.config и любые другие. Механизм конфигурации, который вы должны поддерживать.
В зависимости от уровня мастерства ваших партнеров по поддержке (независимо от того, будут ли они ломать XML), я думаю, вы также можете захотеть предоставить утилиту с графическим интерфейсом, которая позволит им вертеть все ручки в этом файле конфигурации «Истина правды» с "Apply" запускает и запускает код преобразования / обновления, чтобы внести необходимые изменения в Web.config & friends.
Затем, чтобы управлять вашей конфигурацией для разных сайтов / клиентов, теоретически у вас есть около одного файла конфигурации для управления.
Примечание: В ASP.NET 4.0 будет доступен механизм преобразования конфигурации во время сборки (см. http://blog.hmobius.com/post/2010/02/17/ASPNET-40-Part-4-Config-Transformation-Files.aspx),, который может упростить эту задачу. Похоже, вы можете использовать это с некоторыми хаки для не веб-проектов (см. http://philbolduc.blogspot.com/2010/03/using-config-transforms-outside-web.html).
Однако, если вам нужно внести эти изменения во время развертывания, вы можете застрять в написании пользовательских инструментов для этого, хотя похоже, что преобразования XDT могут быть подходящим вариантом, если вы хотите иметь возможность добавить / обновить / удалить элементы.