2011-12-01 16 views
13

Estoy creando una aplicación web ASP.Net MVC. Hay varios desarrolladores en el equipo que necesitan tener configuraciones diferentes en el archivo web.config. Esta configuración es para la conexión de la base de datos y una máquina virtual Linux local a la que se debe acceder. Hay otras cosas que necesitaremos agregar en el futuro. ¿Qué metodología se puede utilizar para que cada desarrollador tenga su propia configuración personalizada en el web.config sin temor a que su configuración local se comprometa con el control de origen?Desarrolladores múltiples que usan web.config solo con configuraciones diferentes

Las configuraciones de implementación no funcionarán porque están ejecutando el sitio a través del servidor web de desarrollo local VS. Utilizaremos las configuraciones de implementación para implementar en diferentes etapas en nuestro entorno.

+2

... y su control de fuente es? –

+0

@AustinSalonen estamos usando git –

+0

¿Has probado con las transformaciones web.config? – frennky

Respuesta

7

La mayoría de las secciones en el archivo XML de configuración le permiten usar un configSource attribute. Usamos este atributo para colocar secciones comúnmente modificadas por desarrollo en un archivo separado. Cada una de estas secciones comúnmente modificadas tendría un archivo separado * .dev.config y * .prd.config. Los archivos * .dev.config fueron ignorados por el control de origen (git).

La implementación de producción establecería el atributo configSource para utilizar los archivos * .prd.config. De nuevo, esto significa que debe mantener dos conjuntos de configuración actualizados. Empecé a trabajar en una solución para mantener los archivos * .prd.config y * .dev.config sincronizados a nivel de elemento, pero nunca tuve el tiempo para terminarlo.

+0

Sí, el desafío de mantener los archivos sincronizados es algo que estoy dispuesto a tratar ya que el resto es muy simple. –

4

No estoy seguro de si esta es la solución más tecnológica, pero simplemente llamo a mi web.config "web.config.sample", y añada web.config a svn: ignore. Esto impide que los desarrolladores lo comprueben accidentalmente.

Cuando se agrega una nueva clave a web.config, solo tiene que recordar duplicarla en web.config.sample.

Cuando un desarrollador verifica una nueva copia, solo tiene que cambiar el nombre y configurar este archivo. He trabajado en varias compañías, y lo hicimos todas las veces, así que no estoy seguro si realmente hay alguna otra manera de hacer esto.

Editar: También puede configurar un enganche precompromiso para asegurarse de que nadie haya registrado un archivo web.config en un directorio que también contenga un web.config.sample.

Edición # 2: También se podría establecer un gancho post-commit que enviar un correo electrónico a todos los involucrados cuando web.config.sample se actualiza, por lo que sus aplicaciones no empiezan a fallar cuando buscan claves de configuración que faltan. Voy a hacer esto en el futuro.

Cuestiones relacionadas