Estoy trabajando en una biblioteca de clase C # que necesita poder leer la configuración desde web.config
oapp.config
archivo (dependiendo de si se hace referencia a la DLL desde una aplicación web ASP.NET o una aplicación de formularios Windows Forms).
He encontrado que
ConfigurationSettings.AppSettings.Get("MySetting")
funciona, pero ese código ha sido marcado como obsoleto por Microsoft.
He leído que debería estar usando:
ConfigurationManager.AppSettings["MySetting"]
sin embargo, el System.Configuration.ConfigurationManager
clase no parece estar disponible en un proyecto de biblioteca de clases C #.
¿Cuál es la mejor manera de hacer esto?
c#
.net
configuration
appsettings
Russ Clark
fuente
fuente
Respuestas:
Deberá agregar una referencia a
System.Configuration
la carpeta de referencias de su proyecto .Definitivamente deberías estar usando
ConfigurationManager
lo obsoletoConfigurationSettings
.fuente
Para un archivo app.config de muestra como el siguiente:
Usted lee la configuración de la aplicación anterior utilizando el código que se muestra a continuación:
Es posible que también deba agregar una referencia a
System.Configuration
su proyecto si aún no hay una. Luego puede acceder a los valores de esta manera:fuente
Actualización para .NET Framework 4.5 y 4.6; lo siguiente ya no funcionará:
Ahora acceda a la clase de Configuración a través de Propiedades:
Consulte Gestión de la configuración de la aplicación para obtener más información.
fuente
Haga clic derecho en la biblioteca de su clase y elija la opción "Agregar referencias" en el menú.
Y desde la pestaña .NET, seleccione System.Configuration. Esto incluiría el archivo System.Configuration DLL en su proyecto.
fuente
ConfigurationManager.ConnectionStrings[0].ConnectionString
Estoy usando esto, y funciona bien para mí:
fuente
Leer de la configuración:
Deberá agregar una referencia a la configuración:
Obtenga valor con el siguiente código:
Guardar en la configuración:
fuente
Debe agregar una referencia al ensamblado System.Configuration al proyecto.
fuente
Es posible que esté agregando el archivo App.config a un archivo DLL. App.Config funciona solo para proyectos ejecutables, ya que todos los archivos DLL toman la configuración del archivo de configuración para el archivo EXE que se está ejecutando.
Digamos que tiene dos proyectos en su solución:
Su problema podría estar relacionado con el hecho de que está incluyendo el archivo app.config en SomeDLL y no SomeExe. SomeDll puede leer la configuración del proyecto SomeExe.
fuente
Prueba esto:
En el archivo web.config , esta debería ser la siguiente estructura:
fuente
Yo tuve el mismo problema. Solo léalos de esta manera: System.Configuration.ConfigurationSettings.AppSettings ["MySetting"]
fuente
This method is obsolete, it has been replaced by System.Configuration!System.Configuration.ConfigurationManager.AppSettings
web.config
se usa con aplicaciones web.web.config
por defecto tiene varias configuraciones requeridas para la aplicación web. Puede tener unweb.config
para cada carpeta en su aplicación web.app.config
se usa para aplicaciones de Windows. Cuando cree la aplicación en Visual Studio, se le cambiará el nombre automáticamente<appname>.exe.config
y este archivo debe entregarse junto con su aplicación.Puede usar el mismo método para llamar a los
app settings
valores de ambos archivos de configuración: System.Configuration.ConfigurationSettings.AppSettings ["Key"]fuente
System.Configuration.COnfigurationSettings.AppSettings.Get("Key")
lugar de usar los corchetes.Como encontré el mejor enfoque para acceder a las variables de configuración de la aplicación de manera sistemática al hacer una clase de contenedor sobre el sistema.
Ahora podemos acceder a las variables de configuración necesarias mediante nombres codificados utilizando otra clase como se muestra a continuación:
fuente
Le recomiendo que cree un contenedor para esta llamada. Algo así como ay
ConfigurationReaderService
use la inyección de dependencia para obtener esta clase. De esta forma, podrá aislar estos archivos de configuración con fines de prueba.Entonces use el
ConfigurationManager.AppSettings["something"];
sugerido y devuelva este valor. Con este método, puede crear algún tipo de devolución predeterminada si no hay ninguna clave disponible en el archivo .config.fuente
app.DEBUG.config
,app.RELEASE.config
yapp.TEST.config
, etc.Además, puedes usar Formo :
Configuración:
Código:
fuente
Solo para completar, hay otra opción disponible solo para proyectos web: System.Web.Configuration.WebConfigurationManager.AppSettings ["MySetting"]
El beneficio de esto es que no requiere que se agregue una referencia adicional, por lo que puede ser preferible para algunas personas.
fuente
Paso 1: haga clic derecho en la pestaña de referencias para agregar referencias.
Paso 2: haga clic en la pestaña Ensamblajes
Paso 3: busque 'System.Configuration'
Paso 4: haz clic en Aceptar.
Entonces funcionará.
fuente
Siempre creo una interfaz IConfig con propiedades typesafe declaradas para todos los valores de configuración. Una clase de implementación de Config envuelve las llamadas a System.Configuration. Todas sus llamadas de System.Configuration ahora están en un solo lugar, y es mucho más fácil y limpio mantener y rastrear qué campos se están utilizando y declarar sus valores predeterminados. Escribo un conjunto de métodos de ayuda privados para leer y analizar tipos de datos comunes.
Usando un marco IoC puede acceder a los campos IConfig en cualquier lugar de su aplicación simplemente pasando la interfaz a un constructor de clases. También puede crear implementaciones simuladas de la interfaz IConfig en sus pruebas unitarias para que ahora pueda probar varios valores de configuración y combinaciones de valores sin necesidad de tocar su archivo App.config o Web.config.
fuente
Otra posible solución:
fuente
He estado tratando de encontrar una solución para este mismo problema durante un par de días. Pude resolver esto agregando una clave dentro de la etiqueta de configuración de aplicaciones en el archivo web.config . Esto debería anular el archivo .dll cuando se usa el asistente.
fuente
Puedes usar la siguiente línea. En mi caso estaba funcionando: System.Configuration.ConfigurationSettings.AppSettings ["yourKeyName"]
Debe tener cuidado de que la línea de código anterior también sea la versión anterior y esté obsoleta en las nuevas bibliotecas.
fuente
ConfigurationManager no es lo que necesita para acceder a su propia configuración.
Para hacer esto debes usar
{YourAppName}.Properties.Settings.{settingName}
fuente
Pude lograr que el siguiente enfoque funcione para proyectos de .NET Core:
Pasos:
He creado un método de inicio de sesión () para mostrar el uso de la clase de configuración.
Cree appsettings.json en su proyecto con contenido:
fuente
Si necesita / desea utilizar la
ConfigurationManager
clase ...Puede que tenga que cargar
System.Configuration.ConfigurationManager
por Microsoft a través de NuGet Package ManagerDocumentos de Microsoft
Una cosa que vale la pena señalar de los documentos ...
fuente
Verifique la versión .NET en la que está trabajando. Debe ser superior a 4. Y debe agregar la biblioteca del sistema System.Configuration a su aplicación.
fuente
Aquí hay un ejemplo:
App.config
fuente