2010-05-13 21 views
8

Ok, sé que esto puede ser un problema de diseño, por lo que me gustaría tener comentarios sobre eso también.¿Cómo puedo compartir la configuración de configuración en múltiples proyectos en Visual Studio?

Tengo una solución de aplicación web de Visual Studio. Tengo tres proyectos como UserInterface, BusinessLogic y DataAccess.

Tuve que almacenar algunas configuraciones definidas por el usuario y creé configSections en el archivo de configuración.

Accedo a estas configuraciones por clases que heredan de .NET ConfigurationSection clase base.

En resumen, para cada proyecto tenía una configuración separada y para esa configuración correspondiente tuve una clase en ese proyecto heredando de ConfigurationSection para acceder a la configuración de la sección de configuración.

Esto funciona todo dulce. Pero surge el problema si hay alguna configuración que deba usar en múltiples proyectos. Entonces, si necesito usar una configuración definida en UserInterface project configSection en, digamos, proyecto de BusinessLogic, tengo que hacer una copia de esa configuración en la sección de configuración de BusinessLogic. Esto termina teniendo la misma configuración copiada en múltiples configSections.

¿No es esto demasiado redundante?

Respuesta

3

Poner compartida ajustes de configuración en un archivo separado y utilizar esta técnica: http://blogs.msdn.com/jjameson/archive/2009/04/02/linked-files-in-visual-studio-solutions.aspx

+0

Es necesario mantener ese enlace, describe los archivos vinculados muy bien. – Will

+0

Hmm. ¿No se parece mucho a crear un proyecto "común" y poner la configuración compartida en él? ¿Y luego el resto de los proyectos podría acceder a ese Común para eso? – neebz

0

Usando su ejemplo:

Basta con crear la configuración en el proyecto de lógica de negocios y luego exponer una Getter al proyecto de interfaz de usuario .

Luego, la IU puede consultar el valor de BL. Su configuración está solo en un lugar: el nivel más bajo que puede ser.

Sin embargo, si reemplaza un proyecto de nivel inferior por uno nuevo, deberá asegurarse de que la configuración también se replique. Es probable que esto solo sea un problema si la configuración está en el nivel de acceso a datos, ya que es la más probable que se modifique (por ejemplo, un proveedor de base de datos diferente).

1

realidad nunca se hace esto, pero en teoría podría funcionar ...

Al definir su sección de configuración personalizada, establezca su configSource en un archivo externo (whatever.config). Este archivo externo debe agregarse a la SOLUCIÓN y no al proyecto. Aparecerá en "Elementos de solución". En cada proyecto, agregue un archivo existente, navegue hasta whatever.config, haga clic en el menú desplegable en el botón Agregar y seleccione "Agregar como enlace".

Whatever.config será un único archivo que puede editar en Elementos de solución, y se copia en cada aplicación en tiempo de compilación.

+0

Sí, yo estaba pensando en la misma línea. El único problema que tengo es que quería que la clase de controlador (que analiza la información de whatever.config) fuera también un elemento de solución.de modo que config + su analizador solo existen una vez y se vinculan a varios proyectos. ¿Aunque el problema no es que Visual Studio compile una clase que esté en el nivel de Artículo de solución? No he podido hacerlo – neebz

Cuestiones relacionadas