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á Debug
e Release
configurações para nomear seus arquivos App.Debug.config
e 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.config
e App.*.config
referê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.config
para 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.config
transformações!
Para sua informação
Certifique-se de que seus App.*.config
arquivos 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>