sábado, 17 de septiembre de 2022

Archivos externos de recursos resx en .NET

Para no tener que recompilar un proyecto cuando cambian ciertas condiciones (rutas, ubicaciones, etc) conviene almacenar algunas variables en un archivo externo de recursos .resx donde podremos modificar manualmente dichas variables sin tener que recompilar de nuevo el proyecto.

1ª Opción

En nuestro proyecto, elegimos proyecto -> propiedades

 

Archivos externos de recursos resx en .NET

Vamos a la última pestaña de recursos y pulsamos sobre “Este proyecto no contiene un archivo de recursos predeterminado….”

 

Este proyecto no contiene un archivo de recursos predeterminado

Esta acción, nos abre una pantalla de recursos donde podemos introducir la declaración de variables y sus valores correspondientes

 

declaración de variables y sus valores correspondientes

Hecho esto, no es necesario que declaremos dichas variables en el código, podemos referirnos a ellas desde nuestro código tecleando My.Resources.[Nombre_Variable]

Estas definiciones se encuentran en la carpeta My Project del explorador de soluciones

 

carpeta My Project del explorador de soluciones

Podemos ir al directorio de nuestro proyecto y en la carpeta My Project encontraremos un archivo llamado Resources.resx donde se encuentran definidas nuestras variables, podemos modificar sus valore directamente en el archivo abriéndolo con un editor, por ejemplo notepad++


notepad++


Y al final del archivo aparecen nuestras definiciones donde podemos cambiar los valores sin necesidad de recompilar el proyecto

 

definiciones donde podemos cambiar los valores

En este ejemplo hemos utilizado rutas, pero si no escribimos bien la ruta puede dar error, porque en realidad leerá C:\Ruta_Aplicacion\C:\PRUEBAS Hay que estar atentos a ver que parte de la ruta ponemos, podemos poner por ejemplo en vez de C:\PRUEBAS poner sólo pruebas, y el programa lo añadirá a la ruta de la aplicación, pero si queremos una ruta diferente de la aplicación podemos utilizar la segunda opción.

2ª Opción

Otra solución consiste en añadir un archivo de configuración app.config o settings. En el explorador de soluciones con el botón derecho del ratón pulsamos Agregar -> Nuevo elemento

app.config o settings


Sobre la pestaña General de Elementos comunes, elegimos Archivo de configuración 


Pestaña General de Elementos comunes

Ahora nos sale una pantalla donde podemos elegir el nombre de la variable y su valor

 

Archivo de configuración

Si el código creado automáticamente no funciona, podemos editarlo manualmente y dejarlo de este modo:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

     <configSections>

          <sectionGroup name="applicationSettings"

                      type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >

 

                <section name="Nombre_de_tu_Proyecto.Properties.Settings"

                     type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

                     requirePermission="false" />

 

          </sectionGroup>

     </configSections>

   

     <appSettings>

          <!--Directorio de entrada de los ficheros-->

          <add key="dirEntrada" value="C:\Pruebas" />

          <!--Directorio de salida para el fichero una vez unido-->

          <add key="dirSalida" value="C:\Pruebas\Out" />

          <!--Directorio donde se deja la copia del original-->

          <add key="dirCopiaOriginal" value="C:\Pruebas\Original" />

          <add key="dirTemporal" value="C:\Pruebas\TEMPORAL" />

          <!--Posicion final e inicial de coincidencia de archivos-->

          <add key="posInicial" value= "1" />

          <add key="posFinal" value= "1" />

     </appSettings>

</configuration>


Luego en el código le llamamos así a las variables definidas.

Dim dirEntrada As String = ConfigurationManager.AppSettings("dirEntrada").ToString()

Para que el código nos reconozca las instrucciones de llamada a ConfigurationManage, es importante importar antes la librería System.Configuration

Imports System.Configuration

Si aun así no funciona, es posible que tengamos que instalar el paquete System.Configuration desde nuget, para ello sobre el error pulsamos en Mostrar posibles correcciones del error.

Mostrar posibles correcciones del error.


Esto nos despliega un combo con las diferentes opciones, elegimos Instalar Paquete “System.ConfigurationManager” -> Buscar e instalar la última versión

 

Instalar Paquete “System.ConfigurationManager” -> Buscar e instalar la última versión

Ahora ya podemos editar el archivo app.config o settings para cambiar los valores de las variables definidas, sin necesidad de recompilar el proyecto cada vez.


No hay comentarios:

Publicar un comentario