2010-06-04 7 views
6

Somos un equipo pequeño, que trabaja en un proyecto web asp.net, así como en el servicio, ambos proyectos dependen de una biblioteca de clases compartida.Configuraciones de configuración diferentes por desarrollador para la biblioteca de clase C#

Queremos que la configuración de la biblioteca de clases sea diferente para el desarrollador (y más adelante para la producción). En la configuración se incluyen información confidencial, como contraseñas, así como nombres de host.

¿Cómo deberíamos asignar estas configuraciones?

A menos que me equivoque, la configuración de web.config/application no es lo suficientemente buena, ya que no funcionan para la biblioteca de clases compartida.

ps: Además, algunas variables deben estar vinculadas estáticamente, y el resto (como las conexiones) debe ser dinámico.

+1

¿Cómo se ha diseñado la solución? ¿Qué software de control de fuente estás usando? –

+0

Estamos usando svn. No estoy seguro de qué quiere decir con la forma en que se presenta la solución, básicamente existe la solución, y con ella tenemos múltiples proyectos, la mayoría son bibliotecas de clase, una biblioteca principal que los proyectos: el servicio y los proyectos web, dependen de. – user145100

+0

Esto es un poco similar a lo que hemos encontrado que es mejor usar: (mejor que lo que se ha discutido en este hilo) http://stackoverflow.com/questions/236412/connection-string-hell-in-net- linq-sql-asp-net – user145100

Respuesta

2

Los archivos web.config app.config se leen desde cualquier sitio web/aplicación que esté ejecutando. I.E., no se utilizan los archivos de configuración de la aplicación en la biblioteca de la clase. p.ej. cualquier referencia a ConfigurationManager.ConnectionStrings ConfigurationManager.AppSettings dentro de su biblioteca de clase usará cualquier web.config/app.config que esté definido en la aplicación que esté usando la biblioteca de clases y no en cualquier .config, puede que tenga la configuración dentro de la misma biblioteca de clases.

La manera más fácil de administrar diferentes configuraciones por desarrollador y para producción es almacenar su configuración en un archivo diferente, p.

<appSettings configSource="Web.appSettings.dev.config"/> 

Cada dev tiene su propio Web.appSettings.dev.config que no está en control de código fuente. Cuando en la producción que acaba de cambiar a:

<appSettings configSource="Web.appSettings.live.config"/> 

sólo tiene que asegurarse de que tiene algún tipo de plantilla en Web.appSettings.template.config SVN que es el maestro, pero no tiene ninguna configuración en forma manual y se administre asegurándose de que las claves nuevas o las cadenas de conexión que se agregan a la plantilla también se agreguen a cada archivo de desarrollo y de producción.

+0

¿El archivo "Web.appSettings.dev.config" se leería siempre con este nombre de archivo? como he intentado agregar un archivo de recursos de Configuraciones antes, y parece que las bibliotecas de clases NO las leen. – user145100

+0

Qué quiere decir con "un archivo de recursos de Configuraciones" estoy hablando de web.config y el archivo app.config y cómo mover diferentes secciones como la sección appSettings o la sección connectionstrings en archivos separados. Las bibliotecas de clases leen sus configuraciones desde cualquier aplicación que las esté usando. –

+0

Sí, cuando ejecuté mi appname.exe, solo se leyó appname.exe.config, y ningún otro archivo. No quiero tener varios archivos de configuración: appname1.exe.config, appname2.exe.config, web.config. – user145100

Cuestiones relacionadas