Problema com o Team Build 2010 e a transformação web.config

Estou lutando para obter transformações do web.config trabalhando com compilações automatizadas.

Temos uma solução razoavelmente grande, contendo um aplicativo Web ASP.NET e oito bibliotecas de classes. Temos três desenvolvedores trabalhando no projeto e, até agora, cada um "publicou" a solução em uma pasta local e usou a cópia de arquivo para implantar em um servidor de teste. Estou tentando implementar uma solução automatizada de compilação / implantação usando o TFS 2010.

Criei uma definição de compilação e adicionei uma chamada ao msdeploy.exe no modelo do processo de compilação, para implantar o aplicativo no servidor de teste. Por enquanto, tudo bem!

Tentei implementar as transformações web.config e simplesmente não consigo fazê-las funcionar. Se eu criar e publicar localmente no meu PC, a pasta "publish" possui o arquivo web.config transformado e correto.

Usando a criação de equipe, a transformação simplesmente não acontece, e eu só tenho o arquivo web.config base.

Tentei adicionar uma etapa pós-compilação no arquivo de projeto do aplicativo Web, como outros sugeriram, semelhante a:

<target name="AfterBuild">
<TransformXml Source="Web.generic.config"
             Transform="$(ProjectConfigTransformFileName)"
             Destination="Web.Config" />
</target>

mas isso falha porque o arquivo web.config de origem possui uma seção "applicationSettings". Eu recebo o erro

Não foi possível encontrar informações de esquema para o elemento 'applicationSettings'.

Eu já vi sugestões sobre como adicionar argumentos à tarefa MSBuild na definição de compilação, como

/t:TransformWebConfig /p:Configuration=Debug

Mas isso ocorre quando os projetos da biblioteca de classes são criados, provavelmente porque eles não têm um arquivo web.config.

Alguma ideia? Como outros, pensei que isso "simplesmente funcionaria", mas aparentemente não. Esta é a última parte que eu preciso para trabalhar e isso está me deixando louco. Eu não sou um especialista em msbuild, tão claro e simples, por favor!

Desde já, obrigado.

Doug

questionAnswers(2)

yourAnswerToTheQuestion