Transformation de web.config
Autor: Eduardo Spaki | Publicado: 2011-07-23T18:30:00-03:00

  Transformation de arquivos de configuração é uma feature que surgiu com o Visual Studio de 2010. São arquivos de configurações que complementam o arquivo de configuração original. Esse complemento pode ser a adição, remoção e a transformação de tags do arquivo original.  Esses complementos são bem vindos quando precisamos gerar builds para ambientes distintos. Se sua empresa trabalha com cenários de testes, homologação, produção, etc… Pode gerar um transformation para cada um desses cenários, alterando a tag de connection string com o banco de dados por exemplo.  Ao criarmos um projeto web no Visual Studio, temos de cara as configurações de debug e release.    Ao abrir o arquivo de release, podemos ver que, diferentemente do web.config, o web.release.config não tem tantas tags, apenas instruções para as transformações das tags desejadas.    Para criamos mais uma variação do web.config, primeiro criamos um cenário:        Durante a criação definiremos o nome do ambiente, e também podemos definir se ele se baseará em um ambiente existente.    Com o ambiente criado, podemos adicionar o arquivo de configuração desse ambiente.      Vamos abrir o arquivo original e adicionarmos algumas configurações.    Observe a origem do web.config original. Ele já veio com connection string, e adicionei duas &quot;appSettings&quot;.  Agora, definiremos o arquivo web.teste.config assim:     &lt;?xml version=&quot;1.0&quot;?&gt; &lt;configuration xmlns:xdt=&quot;http://schemas.microsoft.com/XML-Document-Transform&quot;&gt;&#160;&#160; &lt;connectionStrings&gt;&#160;&#160;&#160;&#160; &lt;add xdt:Transform=&quot;RemoveAll&quot; /&gt;&#160;&#160; &lt;/connectionStrings&gt;&#160;&#160; &lt;appSettings&gt;&#160;&#160;&#160;&#160; &lt;add key=&quot;Numero1&quot; value=&quot;2&quot; xdt:Transform=&quot;Replace&quot; xdt:Locator=&quot;Match(key)&quot;/&gt;&#160;&#160;&#160;&#160; &lt;add key=&quot;Numero2&quot; value=&quot;3&quot; xdt:Transform=&quot;Replace&quot; xdt:Locator=&quot;Match(key)&quot;/&gt;&#160;&#160; &lt;/appSettings&gt;&#160;&#160; &lt;system.web&gt;&#160;&#160;&#160;&#160; &lt;compilation xdt:Transform=&quot;RemoveAttributes(debug)&quot; /&gt;&#160;&#160; &lt;/system.web&gt;&#160;&#160;&#160; &lt;/configuration&gt;Regras para o tranformation:  Sempre respeite a hierarquia da tag, no exemplo das tags &quot;Numero1&quot; e &quot;Numero2&quot;, elas tem que estar dentro da tag &quot;appSettings&quot;.  Para aplicar o transformation tem que usar o atributo &quot;xdt:Transform&quot;.  Clique aqui para obter vários exemplos de sua aplicação.No exemplo citado foram removidas qualquer connection string pelo &quot;RemoveAll&quot; e alteradas (&quot;Replace&quot;) algumas configurações do &quot;appSettings&quot;, que foram localizadas pelo atributo &quot;key&quot; (&quot;Match(key)&quot;).Vamos gerar o build para ver se funciona? Então gere uma publicação:Reparem na imagem acima, que a build configuration é a Teste, que acabamos de criar.Após publicarmos, olhem o resultado:Temos um novo web.config transformado/mesclado.E isso se reproduz quando utilizamos o mecanismo de build do TFS. Mas esse caso fica para a próxima!