He realizado un proyecto en C#.NET donde mi archivo de base de datos es un libro de Excel. Como la ubicación de la cadena de conexión está codificada en mi codificación, no hay problema para instalarla en mi sistema, pero para otros sistemas sí.
¿Existe una manera de pedir al usuario que establezca una ruta una vez que se haya completado la configuración de la aplicación?
Las respuestas que obtuve fueron "Use App.Config"... ¿puede alguien decir qué es este App.config y cómo usarlo en mi contexto aquí?
En su forma más simple, el app.config es un archivo XML con muchas secciones de configuración predefinidas disponibles y soporte para secciones de configuración personalizadas. Una "sección de configuración" es un fragmento de XML con un esquema destinado a almacenar algún tipo de información.
Los ajustes pueden ser configurados usando secciones de configuración incorporadas como connectionStrings
o appSettings
. Puedes añadir tus propias secciones de configuración personalizadas; este es un tema avanzado, pero muy potente para construir archivos de configuración de tipo fuerte.
Las aplicaciones web suelen tener un web.config, mientras que las aplicaciones Windows GUI/servicio tienen un archivo app.config.
Los archivos de configuración a nivel de aplicación heredan los ajustes de los archivos de configuración global, por ejemplo, el machine.config.
Las cadenas de conexión tienen un esquema predefinido que puedes utilizar. Tenga en cuenta que este pequeño fragmento es en realidad un archivo app.config (o web.config) válido:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="MyKey"
connectionString="Data Source=localhost;Initial Catalog=ABC;"
providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
Una vez que hayas definido tu app.config, puedes leerlo en código usando la clase ConfigurationManager. No se deje intimidar por los verborreicos ejemplos de MSDN; en realidad es bastante sencillo.
string connectionString = ConfigurationManager.ConnectionStrings["MyKey"].ConnectionString;
Cambiar con frecuencia los archivos *.config no suele ser una buena idea, pero parece que sólo quieres realizar una única configuración.
Ver: https://stackoverflow.com/q/502411/453277 que describe cómo actualizar la sección connectionStrings
del archivo *.config en tiempo de ejecución.
Tenga en cuenta que lo ideal sería realizar estos cambios de configuración desde un simple instalador.
*Q: Supongamos que cambio manualmente algún `
A: Cuando compilas una aplicación, su app.config se copia en el directorio bin1 con un nombre que coincide con tu exe. Por ejemplo, si su exe se llamó "test.exe", debería haber un "text.exe.config" en su directorio bin. Usted puede cambiar la configuración sin una recompilación, pero tendrá que editar el archivo de configuración que se creó en el momento de la compilación, no el original app.config.
1: Tenga en cuenta que los archivos web.config no se mueven, sino que permanecen en la misma ubicación en tiempo de compilación y despliegue. Una excepción a esto es cuando un web.config es transformado.
Con .NET Core se han introducido nuevas opciones de configuración. El funcionamiento de los archivos *.config no parece haber cambiado, pero los desarrolladores son libres de elegir nuevos paradigmas de configuración más flexibles.
App.Config es un archivo XML que se utiliza como archivo de configuración para su aplicación. En otras palabras, se almacena dentro de él cualquier configuración que se quiera cambiar sin tener que cambiar el código (y recompilar). A menudo se utiliza para almacenar las cadenas de conexión.
Ver este artículo de MSDN sobre cómo hacerlo.
Puedes acceder a las claves en el App.Config usando:
ConfigurationSettings.AppSettings["KeyName"]
Echa un vistazo a este hilo