Ejecutamos un sistema complejo escrito en C# .NET 3.5, que consta de más de 20 sitios web, más de 10 servicios de Windows y varias tareas programadas y aplicaciones de ayuda.¿La mejor manera de manejar múltiples instancias de archivos de configuración?
Cada uno de éstos se incluye con una o más de nuestra lógica de negocio y el marco de DLL. Estas DLL tienen configuraciones de configuración extensas, y esto se ha convertido en una pesadilla en la que mantenemos más de 40 archivos de configuración para varias instancias de las mismas bibliotecas de clases.
No registramos nuestras DLL en el GAC por varias razones: 1) Nos gusta la flexibilidad de implementar rápidamente cambios en proyectos selectivos sin reconstruir todo el sistema o causar un tiempo de inactividad innecesario. 2) Algunas instancias de las DLL requieren configuraciones ligeramente diferentes; por ejemplo, algunos proyectos usan diferentes cadenas de conexión, direcciones de correo electrónico de notificación, etc.
Experimentamos con los atributos de archivo/configSource de AppSettings en Web.config/App.config, pero solo funcionan con rutas relativas, no entre proyectos. Consideramos guardar los valores predeterminados en machine.config pero esta es una misión, estar demasiado abarrotada y llena de cosas importantes que no están relacionadas con nuestros proyectos.
Nuestra "solución" actual es usar nuestro propio formato de archivo de configuración, que primero busca una configuración en la carpeta "bin" del proyecto actual, y si eso no existe, carga desde una ubicación central codificada. Esto nos permite anular la configuración cuando sea necesario, pero use la configuración predeterminada el resto del tiempo.
En última instancia, lo que queremos es tener las configuraciones predeterminadas de cada biblioteca de clase en una ubicación central, y cada instancia puede tener un archivo de configuración opcional que solo anula las configuraciones que difieren de las predeterminadas.
¿Existe una manera sugerida, estándar de la industria de resolver este problema en .NET?
No puedo decir que tenga experiencia en este tipo de cosas, pero ¿no es esto para lo que sirve el registro? Estoy seguro de que tiene su propio conjunto de problemas, pero ¿se pregunta si debería considerarse una solución? –
¿funcionan todos estos en el mismo servidor? – Amirshk
(descargo de responsabilidad: es algo que escribí): hay un hilo similar en esto: http://stackoverflow.com/questions/1987013/how-to-setup-web-config-for-build-to-multi-environments- without-code-changes/2024921 # 2024921, y escribí acerca de una herramienta que he escrito allí, que también puede ayudarte aquí. FWIW. –