Manhã / tarde / noite todos.
Estou tentando aplicar transformações web.config como parte de uma compilação Jenkins. Eu tenho a transformação em execução, adicionando o seguinte ao meu csproj:
<Target Name="BeforeBuild">
<TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="Web.config" />
</Target>
O que é ótimo, exceto pelo fato de que agoratransforma o arquivo quando a solução é executada localmente. Por isso, tentei evitar isso adicionando uma condição para APENAS aplicar transformações para construções de Jenkins. Adicionei configurações de uma solução, configurei o perfil de publicação para usá-lo e tentei adicionar uma condição ...
<Target Name="BeforeBuild">
<TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="Web.config" Condition=""$(Configuration)" == "Debug Build"" />
</Target>
... e ...... não funciona :-(.
De fato, as transformações param completamente de funcionarquando essa condição é adicionada (posso afirmar isso alterando as configurações da solução localmente e construindo e observando que o arquivo web.config local nunca é alterado, independentemente da opção selecionada).
Como faço para que as transformações sejam executadas quando e somente quando a configuração da solução está definida como "Compilação de Depuração"?
Desde já, obrigado.
Respostas:
2 para resposta № 1Se você usar o perfil de publicação no servidor de construção, poderá usar transformação web.config específica do perfil para adicionar sua transformação customizada sem modificar os arquivos do projeto. Você pode simplesmente clicar com o botão direito do mouse no seu perfil de publicação no Solution Explorer e selecionar Add config transform
.
O arquivo de transformação resultante será nomeado web.[publishprofile].config
e essa transformação será executada após a transformação específica da configuração (Debug / Release). Ele será executado apenas ao publicar / empacotar usando esse perfil de publicação.
Se a transformação do perfil de publicação não atender às suas necessidades, basta adicionar /p:CustomConfigTransform=buildserver
O argumento msbuild no servidor de construção jenkins e teste esta propriedade em seu script de construção.
<Target Name="BeforeBuild">
<TransformXml Source="Web.config" Transform="Web.$(CustomConfigTransform).config" Destination="Web.config" Condition=""$(CustomConfigTransform)" != """ />
</Target>
Não há necessidade de adicionar nova configuração de compilação. Também não tenho certeza se a transformação para o mesmo arquivo é suportada.