Olá Ricardo.
Também temos este cenário na Tecnologia pois em atualizações de versão não substituímos o arquivo em um ambiente já configurado. Criamos na Tecnologia um recurso de Migração de Web.Config, inclusive a intenção é fornecer para os sistemas este mesmo mecanismo para que vocês possam fazer a migração de suas alterações.
O mecanismo basicamente registra nos AppSettings do web.config uma nova informação "webConfigVersion" que é a versão do web.config de Tecnologia. Ao subir o aplicativo esse valor é verificado e caso esteja em versão inferior à atual aplicamos via código alterações no web.config. Neste mecanismo temos vários métodos utilitários que ajudam na manipulação do web.config para ajustá-lo via programação. Já estamos usando isso em algumas versões e tem facilitado muito além de garantir a consistencia do ambiente.
Abri a SMS 786988 no Backlog do WES para avaliarmos quando podemos liberar isso e o que é necessário fazer, mas acredito que seja pouco trabalho.
A titulo de exemplo, a seguir um trecho do código de migração:
protected override string OnUpgrade(string currentVersion)
{
int version = Convert.ToInt32(currentVersion);
CheckApplyVersionWebConfig(WesWebConfigMigratorToVersion1.Upgrade, 1, ref version);
CheckApplyVersionWebConfig(UpdateToVersion2, 2, ref version);
CheckApplyVersionWebConfig(UpdateToVersion3, 3, ref version);
// ....
}
private void UpdateToVersion4(XDocument document)
{
var xSection = document.Root.EnsureElement("system.webServer");
var handlers = xSection.EnsureElement("handlers");
HttpHandler handlerToAdd = new HttpHandler();
handlerToAdd.Name = "CustomArtifactHandler";
handlerToAdd.Verb = "GET";
handlerToAdd.Path = "favicon.ico";
handlerToAdd.ClassName = "Benner.Tecnologia.Wes.Components.CustomArtifactsHandler";
handlerToAdd.AssemblyName = "Benner.Tecnologia.Wes.Components";
//...
}