transformação web.config de web.template.xml não está funcionando

Eu estou tentando obter transformações web.config funcionando conforme descrito aqui . Usamos esse método em outros projetos e funciona sem problemas, mas não nesse novo projeto.

Aqui está o que eu tentei testar sem sucesso

  • Alterando o nome do arquivo wpp.targets, caso eu tenha errado o nome do projeto. Eu sei que o atual que estou usando funciona, já que é o único que faz com que o web.config seja reconstruído a partir de web.template.xml e essa transformação funciona. Apenas os submodelos não funcionam.
  • Tentei com xdt: Locator = “Match (name)”
  • Tentei extensão .config vs. XML, nossos outros projetos onde isso funciona .xml
  • O gerenciador de configuração está configurado para usar a configuração “Teste” do projeto em que estou trabalhando.
  • web.template.Test.xml tem xdt: Transform = “Replace” para a seção que eu quero replace
  • web.template.xml tem o espaço reservado
  • Tentei remover a seção “CopyWebTemplateConfig” do wpp.targets como sugerido na pergunta da pilha vinculada abaixo. Nossos outros projetos têm isso e a seção “PropertyGroup” comentou e eu tentei ambas as combinações.

Eu li o link acima várias vezes e esta questão de pilha relacionada, mas não consigo ver qual é o problema.

Nota A transformação publicar funciona de alguma forma. Ele cria um arquivo web.template.xml que contém os valores de web.template.Test.xml, mas não cria um web.config.xml como as instruções wpp.targets. Então, isso é mais um problema em fazer com que a transformação da compilation funcione.

Alguém tem uma ideia do que está faltando?

wpp.targets

        $(PrepareForRunDependsOn); UpdateWebConfigBeforeRun;                

web.template.xml

      ....  ....   ....  

web.template.Test.xml

     ...   

Saída MSBuild

 Target "UpdateWebConfigBeforeRun: (TargetId:143)" in file "C:\...\Project.wpp.targets" from project "C:\...\Project.csproj" (target "PrepareForRun" depends on it): Task "Message" (TaskId:93) Configuration: Test: Web.template.Test.xml (TaskId:93) Done executing task "Message". (TaskId:93) Task "TransformXml" (TaskId:94) Transforming Source File: Web.template.xml (TaskId:94) Applying Transform File: Web.template.Test.xml (TaskId:94) Executing Replace (transform line 5, 18) (TaskId:94) on /configuration/TestSettings (TaskId:94) Applying to 'TestSettings' element (source line 121, 4) (TaskId:94) Replaced 'TestSettings' element (TaskId:94) Done executing Replace (TaskId:94) Output File: web.config (TaskId:94) Transformation succeeded (TaskId:94) Done executing task "TransformXml". (TaskId:94) Done building target "UpdateWebConfigBeforeRun" in project "Project.csproj".: (TargetId:143) 

Eu tinha instalado o StyleCop e estava fazendo a sobregravação para mim.

Então eu desinstalei e o problema foi resolvido.

Engraçado é que eu re-instalei o StyleCop e a transformação ainda estava funcionando!

Também em alguns pontos notei que eu deveria remover a seção de destino CopyWebTemplateConfig também.

Eu tenho uma solução para o meu problema, mas não tenho certeza qual é a causa, então não tenho certeza se isso vai resolver isso em outros casos.

Examinei a saída do diagnóstico do MSBuild e percebi que, no final, havia outra seção que copiou o web.template para o web.config. Observe que isso ocorre após o destino UpdateWebConfigBeforeRun já ter sido executado e feito suas atualizações do arquivo de transformação de sub-modelo para web.config. Parecia que esta última etapa estava substituindo o web.config pela transformação que eu queria.

Eu não tinha certeza de onde este último conjunto de instruções de cópia estava vindo, então fiz uma busca por todos os arquivos no meu PC procurando por outros arquivos wpp.target. Eu encontrei um outro na pasta de extensões do Slow Cheetah e vi alguns seção superior que estava definindo uma propriedade “transformOnBuild” para false.

Pensando que houve um conflito com o SlowCheetah, eu o desinstalei e as transformações começaram a funcionar como esperado. Isso ainda era um pouco estranho, já que as outras soluções funcionavam com o SlowCheetah ativado. Por um capricho eu re-instalei o SlowCheetah e a transformação continuou a funcionar como esperado.

Então minha solução acabou sendo uma reinstalação do SlowCheetah. Eu ainda estou confuso sobre qual foi a causa deste problema, então se alguém postar uma resposta para isso eu vou dar a eles a recompensa.

Eu tive um problema semelhante na semana passada. Acontece que sempre que você adiciona um projeto a uma solução no VS 2010, a configuração correta do projeto não é aplicada o tempo todo. Então você acha que tem uma configuração ativa, mas outra está ativa nesse projeto, portanto a transformação que você espera não é aplicada.

Verifique as etapas no último comentário deste problema: A configuração da solução personalizada não está aparecendo no Visual Studio 2010

“Eu sei que o atual que estou usando funciona, já que é o único que faz com que o web.config seja reconstruído a partir de web.template.xml. Essa transformação funciona. Apenas os submodelos não funcionam.”

Isso significa que a transformação funciona, mas a seção TestSettings sozinha não é transformada?

Você pode compartilhar saída de compilation com msbuild com verbosidade definido como diagnóstico / detalhado?

Eu escrevi uma postagem no blog sobre esse assunto. Eu uso todos os dias em nosso aplicativo da web. Eu escrevi o post do blog porque o recurso em slowcheetah ainda não está pronto. http://www.locktar.nl/general/use-config-transforms-when-debugging-your-web-application/