Tentei várias soluções e aqui está a mais simples que encontrei pessoalmente.
Dan apontou nos comentários que o post original pertence a Oleg Sych - obrigado, Oleg!
Aqui estão as instruções:
1. Adicione um arquivo XML para cada configuração ao projeto.
Normalmente você terá Debuge Releaseconfigurações para nomear seus arquivos App.Debug.confige App.Release.config. No meu projeto, criei uma configuração para cada tipo de ambiente, então você pode experimentar isso.
2. Descarregue o projeto e abra o arquivo .csproj para edição
O Visual Studio permite editar arquivos .csproj diretamente no editor - basta descarregar o projeto primeiro. Em seguida, clique com o botão direito do mouse e selecione Editar <ProjectName> .csproj .
3. Vincule os arquivos App. *. Config ao App.config principal
Localize a seção arquivo de projeto que contém todos App.confige App.*.configreferências. Você notará que as ações de criação estão definidas para None:
<None Include="App.config" />
<None Include="App.Debug.config" />
<None Include="App.Release.config" />
Primeiro, defina a ação de compilação para todos eles Content.
Em seguida, torne todos os arquivos específicos da configuração dependentes dos principais, App.configpara que o Visual Studio os agrupe da mesma forma que cria arquivos de código e de designer.
Substitua XML acima por um abaixo:
<Content Include="App.config" />
<Content Include="App.Debug.config" >
<DependentUpon>App.config</DependentUpon>
</Content>
<Content Include="App.Release.config" >
<DependentUpon>App.config</DependentUpon>
</Content>
4. Ative a mágica de transformações (necessária apenas para as versões do Visual Studio anteriores ao VS2017 )
No final do arquivo após
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
e antes da final
</Project>
insira o seguinte XML:
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="CoreCompile" Condition="exists('app.$(Configuration).config')">
<!-- Generate transformed app config in the intermediate directory -->
<TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
<!-- Force build process to use the transformed configuration file from now on. -->
<ItemGroup>
<AppConfigWithTargetPath Remove="app.config" />
<AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
<TargetPath>$(TargetFileName).config</TargetPath>
</AppConfigWithTargetPath>
</ItemGroup>
</Target>
Agora você pode recarregar o projeto, construí-lo e desfrutar de App.configtransformações!
Para sua informação
Certifique-se de que seus App.*.configarquivos tenham a configuração correta como esta:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--magic transformations here-->
</configuration>