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á Debug
y Release
configuraciones para nombrar sus archivos App.Debug.config
y 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.*.config
referencias. 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.config
para 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.config
transformaciones!
FYI
Asegúrese de que sus App.*.config
archivos 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>