2011-07-08 12 views
6

Tengo 3 entornos: Dev, QA, Prod on .NET 4. Cada uno tiene un archivo web.config único. Hemos tenido problemas para administrar las tres versiones. Es fácil pasar por alto algo crítico al fusionar manualmente archivos web.config en TFS. Más de una vez hemos terminado con una cadena de conexión que apunta a QA en Prod.Administración de archivos web.config

Así, I read up on web.config transformations. Estos parecen requerir MSBUILD. No tenemos servidor de compilación, así que no estoy seguro de cómo puedo intentar utilizar esta solución. ¿Hay alguna manera de hacer que las transformaciones funcionen con una publicación web normal?

¿Tiene alguna sugerencias alternativas para la gestión de archivos web.config 3?

Respuesta

1

¿Hay una manera de hacer transformaciones trabajo con una web normal publicar?

Absolutamente, échele un vistazo a this MSDN link. No necesitas MSBUILD. Puede establecer sus cadenas de conexión para sus diversos entornos en archivos de configuración separados. Por ejemplo, podría tener Web.config, Web.QA.config y Web.Prod.config, donde QA y Prod están separados Visual Studio Build configurations.

Como alternativa, puede usar las configuraciones de compilación que se agregan de manera predeterminada: Web.config (desarrollo local), Web.Debug.config (uso para QA) y Web.Release.config (use para producción).

Utilizando esta configuración como ejemplo, Web.config tendría toda la configuración, Web.Debug.config solo tendría la configuración que cambia para ese entorno (cadenas de conexión, configuración de la aplicación, etc.) y Web.Release.config solo tiene la configuración que cambia para ese entorno.

Una vez que sus configuraciones y transformaciones son de configuración, que acaba de cambiar su configuración de construcción, construir y publicar desde Visual Studio.

+0

¿Entonces simplemente "desenlaza" el archivo web.debug.conf de TFS para que otros puedan editarlo? Ejemplo: "Archivo - Control de origen - Excluye web.debug.config del control de origen". ? –

+0

@MarkB, no es necesario desvincularlo. es un archivo fuente como cualquier otro. cualquiera debería poder editarlo de acuerdo con la configuración de su política TFS. –

+0

¿Es posible hacer esto sin utilizar Publicar? – AlexFoxGill

1

¿Tiene alguna sugerencias alternativas para la gestión de archivos web.config 3?

Sí, no los administre. Cuanto menos logramos, menos posibilidades hay de cometer errores. Tenga exactamente los mismos archivos web.config para todos sus entornos. El mismo paquete distributivo implementado en todas partes.

Y todas las claves específicas del entorno, como las URL base, las cadenas de conexión, ... podrían definirse en machine.config, que se implementan una sola vez en cada servidor y se reutilizan desde todas sus aplicaciones. O un web.config en la raíz de su sitio IIS del que se derivarán todas las aplicaciones.

+6

que no les gustaría ver la configuración de la aplicación se coloca en machine.config. Muy a menudo los servidores web alojan múltiples aplicaciones y completan todas las configuraciones en la máquina. Conconfig es una receta para el desastre. –

0

Una alternativa es crear mover su configuración que cambia a un archivo externo & vincular ese archivo de nuevo utilizando el atributo configSource. Para las secciones que difieren, póngalo en un archivo externo.

A continuación, puede haber llamado por separado los archivos, por ejemplo dev.config, qa.config, live.config & cambiar el nombre en el web.config, o tienen 1 archivo llamado decir environment.config & nunca fusionarla entre ambientes.

La desventaja es la sección de configuración de todo tiene que ser movido en el archivo.

Simon

1

Si utiliza un proyecto de instalación web para crear un msi, puede agregar una clase de instalador personalizada a websetup. Esto le daría la opción de crear secuencias de comandos por lotes predefinidos que se establecidos adecuadamente los valores en el web.config

msiexec.exe /Qb! /i "MyWebsiteMsi.MSI" SQL_SERVER_ConnStr="ABC" 

He aquí alguna página con un viejo ejemplo enter link description here

Cuestiones relacionadas