c# - Error al cargar App.config
.net .net-3.5 (4)
Tengo una biblioteca de clases .NET 3.5 que construí y que lee un archivo App.config para los valores que necesita. Puede extraer los valores de configuración cuando lo pruebo en Visual Studio. Para probarlo, simplemente cambio el proyecto a una aplicación de consola y ejecuto una llamada a un método.
Tengo la necesidad de llamar a esta biblioteca de clase desde muchos otros programas .NET, y quiero que la biblioteca de clases sea autosuficiente (debería poder llamarla desde cualquier otro programa, y debería usar su propio archivo de configuración, no saber sobre cualquier archivo de configuración de llamada, etc.).
Puedo agregar una referencia al dll (ya que todavía estoy en desarrollo, estoy usando VS 2008, todavía no he lanzado nada al GAC) pero la aplicación que la biblioteca de clase está leyendo proviene del programa de llamada App.config, no la App.config de la biblioteca de la clase.
La biblioteca de clases dll tiene su archivo de configuración en el mismo directorio, por lo que debería poder encontrarlo bien, y la aplicación de llamada tiene un nombre diferente. Estoy utilizando los pares de valores de clave estándar en el App.config (por ejemplo, nombre del archivo de configuración myClassLibrary.dll.config) y obteniendo valores con la siguiente línea de código:
String myVal = ConfigurationSettings.AppSettings["myConfigSetting"];
¿Alguien sabe cómo arreglar esto?
Creo que app.config siempre será utilizado por el ejecutable. Solo déjalo en ese directorio.
Harían eso para asegurarse de que el dll se pueda compartir y no tengan que compartir el mismo archivo .config.
Es posible que pueda crear un enlace desde el archivo ejecutable .config
<appSettings configSource="/lib/app.config">
O cambie su nombre, no entiendo cómo puede tener ambos archivos app.config en el mismo directorio ... ¿no tienen el mismo nombre?
<appSettings configSource="/lib.app.config">
Un dominio de aplicación en C # puede tener solo un archivo app.config de nivel de ensamblaje. Vea aquí en MSDN . Un ejecutable siempre iniciará un AppDomain y, de forma predeterminada, buscará un archivo de configuración con el nombre: EXECUTABLE_NAME.config. Por ejemplo, SampleApp01.exe buscará SampleApp01.exe.config como su archivo de configuración.
puede colocar sus configuraciones en el archivo machine.config dentro de la carpeta del framework de esta manera puede usar su configuración globalmente en todas las aplicaciones .Net que se ejecutan en esa máquina,
No puedo encontrar la forma de evitar la aplicación.config para la llamada a dll / exe, etc. La única forma que he encontrado es usar una ruta codificada y cargarla de esa manera. Aquí está el código que estoy usando para hacer eso:
using System.Configuration;
...
public static KeyValueConfigurationCollection getAppSettingsFromAppConfig(String appConfigPath) {
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = appConfigPath;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
AppSettingsSection section = config.AppSettings;
KeyValueConfigurationCollection appsettings = section.Settings;
return appsettings;
}
Luego tiene una colección de KeyValueConfigurationElement
, que puede usar .Value
para obtener la cadena del archivo de configuración.