/ / web.config transformação baseada na configuração da solução - c #, asp.net, .net, web-config, transformação

Transformação web.config baseada na configuração da solução - c #, asp.net, .net, web-config, transformação

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 ...

Lista suspensa de configuração da soluçã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 № 1

Se 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.