Tengo una aplicación web que tiene funcionalidad de búsqueda. El algoritmo de búsqueda se compila en un dll separado. En el código C# para el algoritmo de búsqueda, estoy usando cadenas contenidas en un archivo de configuración para apuntar al directorio donde reside el índice de búsqueda. Una vez que se compila el código de búsqueda, la información de configuración se incorpora en Search.dll.config
que se coloca en el directorio bin junto con Search.dll. Ahora en mi aplicación web, agrego Search.dll a las referencias. El archivo de configuración no se agrega a la aplicación web. Sin embargo, la aplicación web funciona bien y sabe dónde está el archivo. Porque dentro de Settings.Designer
usa el DefaultSettingValueAttribute
para asignar un valor predeterminado si el archivo de configuración no está allí.moviendo los archivos de configuración para un dll a la aplicación que llama al dll
¿Cómo agrego también Search.dll.config
a mi aplicación web para que el operador pueda cambiar la ubicación de los archivos de índice en el servidor según sea necesario?
Gracias
EDIT:
He intentado añadir el archivo de configuración a mi carpeta de implementación. Pero ASP.NET pone los dlls en un directorio en C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Archivos temporales ASP.NET \ root ... y el archivo de configuración no se copia allí. Entonces, en este momento no tengo idea de cómo incluir el archivo de configuración con mi código.
Gracias por su ayuda.
Nota:
He estado usando el siguiente código para obtener los valores del archivo de configuración en la aplicación. Sin embargo, depende de que el dll y el archivo de configuración estén en la misma carpeta, lo cual no sé cómo lograr.
var executingAssembly = System.Reflection.Assembly.GetExecutingAssembly();
var location = executingAssembly.Location; //C:\MyApp\bin\Debug\Search.dll
var config = ConfigurationManager.OpenExeConfiguration(location);
var sections = config.Sections; //count of this is 21
ConfigurationSectionGroup csg = config.GetSectionGroup("applicationSettings");
ConfigurationSectionCollection csc = csg.Sections;
ConfigurationSection cs = csc.Get("Search.Properties.Settings");
Gracias! ¿Cómo puedo "Marcar el archivo como contenido que debe copiarse a la carpeta de salida"? – Barka
Gracias! Puedo mover las líneas de configuración a web.config, pero ¿cómo podrá mi dll leer web.config? Parece que asp.net los coloca en diferentes carpetas con nombres aleatorios. – Barka
Edité mi respuesta para tratar con esto. –