Ficheros de Configuración de Proyecto Adaptables
Seguro que muchos ya conocéis las ventajas que tienen los ficheros de configuración, en los proyectos web, donde los valores se adaptan a la configuración de compilación seleccionada.
Para el que no los conozca recomiendo que visiten la web de MSDN donde lo explican o también el vídeo tutorial en Channel9.
Pero ¿qué ocurre si queremos usarlo en proyectos que no sean web?. De principio, y sin hacer absolutamente nada, no podemos. Pero tenemos tres posibilidades para poder agregar dicha funcionalidad a nuestros proyectos.
Instalación de la Extensión de VS Configuration Transform
Esta extensión os permitirá agregar ficheros de configuración adaptables al entorno para cualquier proyecto. Yo, desde luego, me decanto por esta opción.
Su uso es muy fácil e intuitivo, botón derecho del ratón sobre el fichero de configuración y hacer click en el menú correspondiente.
Y si, por ejemplo, añadís nuevos entornos de configuración bastará con volver a hacer “click” en el menú contextual para generar el fichero de configuración y asociarlo al proyecto.
Podéis descargarlo desde aquí.
Instalación del Paquete Nuget ConfigTransform
Este paquete Nuget permite extender el fichero de configuración en el proyecto donde esté instalado. Esta es una buena opción cuando no va a ser muy utilizado en vuestros proyectos y queréis dejar a Visual Studio lo más limpio posible de extensiones. Aunque tiene un PERO muy grande, no es absolutamente nada intuitivo de usar, y yo con el poco tiempo del que dispongo no lo he conseguido. Así que si alguien puede aportar más información será de agradecer.
Podéis acceder a su información en este enlace.
Añadirlo de forma manual
Esta es la parte menos sencilla, pero tampoco conlleva mucha complejidad. Se trata de editar el fichero de proyecto (.csproj o .vbproj) y agregarle algunos parámetros para que termine usando la misma librería que se usa en los proyectos web para el fichero “web.config” llamada “Microsoft.Web.Publishing.Tasks.dll”
Primero se debe buscar el nodo XML del fichero de proyecto llamado “ItemGroup” donde esté la entrada al fichero “App.config” y agregar los ficheros de configuración extensibles. Segundo des-comentar el nodo XML «Target» con el nombre «BeforeBuild» y dejarlo como lo pongo a continuación:
<ItemGroup> <None Include="App.config"> <SubType>Designer</SubType> </None> <None Include="App.Debug.config"> <DependentUpon>App.config</DependentUpon> <SubType>Designer</SubType> </None> <None Include="App.Release.config"> <DependentUpon>App.config</DependentUpon> <SubType>Designer</SubType> </None> </ItemGroup> <!--...--> <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" /> <Target Name="BeforeBuild"> <TransformXml Source="App.config" Destination="$(OutputPath)$(TargetFileName).config" Transform="App.$(Configuration).config" ContinueOnError="False" StackTrace="True" /> </Target>
Agregar los fichero de configuración extensibles en el mismo directorio donde está el fichero de configuración del proyecto, acordándose de incluir en el tag XML de “configuration” el elemento “xmlns:xdt” como pongo en el siguiente ejemplo:
<?xml version="1.0" encoding="utf-8" ?> <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <appSettings> <add key="Prueba01" value="TextoARelease" xdt:Transform="Replace" xdt:Locator="Match(key)"/> </appSettings> </configuration>
Volver a cargar el proyecto en Visual Studio y estará listo.
Espero que os resulte útil.