Probé varias soluciones y aquí está la más simple que encontré personalmente.
Dan señaló en los comentarios que la publicación original pertenece a Oleg Sych . ¡ Gracias, Oleg!
Aquí están las instrucciones:
1. Agregue un archivo XML para cada configuración al proyecto.
Por lo general, tendrá Debugy Releaseconfiguraciones para nombrar sus archivos App.Debug.configy App.Release.config. En mi proyecto, creé una configuración para cada tipo de entorno, por lo que es posible que desee experimentar con eso.
2. Descargue el proyecto y abra el archivo .csproj para editarlo
Visual Studio le permite editar archivos .csproj directamente en el editor; solo necesita descargar el proyecto primero. Luego haga clic derecho sobre él y seleccione Editar <ProjectName> .csproj .
3. Enlace los archivos de la aplicación. * .Config a la aplicación principal.config
Encuentre la sección del archivo del proyecto que contiene todos App.config y App.*.configreferencias. Notarás que sus acciones de construcción están configuradas para None:
<None Include="App.config" />
<None Include="App.Debug.config" />
<None Include="App.Release.config" />
Primero, establezca la acción de construcción para todos ellos Content.
A continuación, haga todo los archivos específicos de la configuración dependan del principal App.configpara que Visual Studio los agrupe como lo hace con los archivos de diseñador y de código subyacente.
Reemplace XML arriba con el siguiente:
<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. Activa transformaciones mágicas (solo es necesario para las versiones de Visual Studio anteriores a VS2017 )
Al final del archivo después
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
y antes de la final
</Project>
inserte el siguiente 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>
¡Ahora puedes recargar el proyecto, construirlo y disfrutar de las App.configtransformaciones!
FYI
Asegúrese de que sus App.*.configarchivos tengan la configuración correcta como esta:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--magic transformations here-->
</configuration>