Necesito cambiar entre 3 entornos diferentes al desarrollar mi aplicación web: desarrollo, UAT y Prod. Tengo diferentes conexiones de bases de datos en mis archivos de configuración para todos 3. He visto cambiar estas configuraciones manualmente cambiando todas las referencias y luego reconstruyendo la solución, y también con las directivas de preprocesador. ¿Existe una forma fácil de hacerlo basada en alguna variable para que la configuración no tenga que ser revisada al implementar en un nuevo entorno cada vez?¿La mejor manera de cambiar la configuración entre entornos de Desarrollo/UAT/Prod en ASP.NET?
Respuesta
A mí me parece que se puede beneficiar de las Visual Studio 2005 Web Deployment Project s.
Con eso, puede indicarle que actualice/modifique secciones de su archivo web.config dependiendo de la configuración de compilación.
Echa un vistazo a this blog entry from Scott Gu para una visión general/muestra rápida.
de Scott Hanselman ha sugerido una manera de hacer esto:
http://www.hanselman.com/blog/ManagingMultipleConfigurationFileEnvironmentsWithPreBuildEvents.aspx
Obtengo un 404 en esa página. ¿Sería usted quizás capaz de resumir? –
No hay nada de malo con la url si la corta y 'pega'. Muy extraño ... –
Wierd - ¿tal vez Scott está haciendo referencia de referencia? – Whisk
He adoptado el Jean Paul Boodhoo Method para cambiar las configuraciones. La idea general es tener uno o más archivos TEMPLATE de configuración TOKENIZADOS en lugar de los archivos de configuración. Luego tiene una tarea de script de compilación que reemplaza los tokens con valores de un archivo de propiedades local SINGLE. Este archivo de propiedades contiene todas las diferencias en la configuración y es único por copia de trabajo.
Este sistema me ha funcionado muy bien y, una vez configurado inicialmente, es muy fácil administrar los cambios de entorno.
Soy un gran fan de la utilización de MSBuild, en particular, las tareas de MSBuild Comunidad (http://msbuildtasks.tigris.org/) y no es una tarea XSLT para transformar el web.config con la configuración de serie de conexión adecuados, etc.
guardo estas tareas útiles:
<Target Name="Configs">
<Xslt RootTag="" Inputs="web.config" Output="Web.$(COMPUTERNAME).config" Xsl="web.config.$(COMPUTERNAME).xslt" Condition="Exists('web.config.$(COMPUTERNAME).xslt')" />
Obviamente, esto no es 100% lo que está buscando, que es lo que cada desarrollador puede tener su propio web.c onfig
Pero no hay ninguna razón por la que no pueda usar el principio anterior para tener múltiples configuraciones de compilación que apliquen el XSLT correcto.
Mi XSLT se ve así:
<?xml version="1.0" encoding="utf-8"?>
<!-- Dev -->
<xsl:template match="/configuration/connectionStrings/add[@name='MyConnectionString']/@connectionString">
<xsl:attribute name="connectionString">Data Source=MyServer;Initial Catalog=MyBD;User ID=user;password=pwd</xsl:attribute>
</xsl:template>
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
He estado buscando en MSBuild y/o NA nt es lo siguiente que debo aprender, pero aún no he empezado. ¡Sé que necesito hacerlo! –
Mi respuesta tiene enlaces a una serie de publicaciones de blog que enseñan cómo automatizar una compilación con NAnt. Puede ser un lugar útil para comenzar. – Gilligan
No tengo ninguna experiencia con NAnt, ¿qué ofrece en la parte superior de MSBuild? –
Siempre se puede usar de NAnt + NAnt.Contrib modificar el web.config durante la construcción. NAnt tiene tareas xmlpeek y xmlpoke que le permiten actualizar archivos xml.
p. Ej.
< xmlpoke file = "$ {dist.dir} /Web.config" xpath = "/ configuration/applicationSettings/MyProj.Web.Properties.Configuración/configuración [@name = 'MyProj_Web_Service']/value " value =" http: // $ {AppServer} /Service.asmx "/ >
- 1. JUnit + DbUnit: cambiar la conexión de la base de datos entre entornos de desarrollo y prueba
- 2. ¿La mejor manera de implementar DropDownList en ASP.NET MVC 2?
- 3. Git: configuración de la aplicación y diferentes entornos
- 4. Configuración de varios entornos (desarrollo, producción) basados en la URL
- 5. C# La mejor manera de comunicarse entre las clases
- 6. ¿La mejor manera de clonar la configuración de IIS en el nuevo servidor?
- 7. Múltiples entornos en ASP.Net MVC 2
- 8. Entornos de configuración de Sinatra sobre la marcha
- 9. La mejor manera de enviar correo electrónico masivo en asp.net
- 10. La mejor manera de transmitir archivos en ASP.NET
- 11. La mejor manera de cambiar entre activos estáticos y activos basados en CDN para el desarrollo y la implementación
- 12. ¿La mejor manera de cambiar de Vim a Emacs?
- 13. ¿Cuál es la mejor manera de almacenar la configuración específica de la aplicación en los rieles?
- 14. cambiar la configuración regional de la fecha
- 15. ¿Es MVC la mejor manera de codificar aplicaciones asp.net?
- 16. La mejor manera de hacer una programación asíncrona con Asp.Net
- 17. ¿La mejor manera de cambiar entre varias versiones del reproductor Flash para realizar pruebas más fácilmente?
- 18. LINQ to SQL - la mejor manera de cambiar entre test y dev db
- 19. ¿La mejor manera de crear una página ASP.NET para imprimir?
- 20. ¿Cuál es la mejor manera de guardar la configuración del usuario en la aplicación Java?
- 21. La mejor manera de compartir imágenes entre varias aplicaciones
- 22. Swing: ¿la mejor manera de interactuar entre vistas?
- 23. ¿La mejor manera de convertir entre [Char] y [Word8]?
- 24. La mejor manera de compartir código entre WPF y Silverlight
- 25. ¿Cuál es la mejor manera de comunicarse entre los AppDomains?
- 26. Cambiar la configuración de seguridad de primavera
- 27. Cambiar la configuración de la BIOS usando el lenguaje C
- 28. ¿Cuál es la mejor manera de serializar la configuración de la aplicación Delphi?
- 29. mejor manera de cambiar elementos usando jQuery
- 30. ¿Cuál es la relación entre entornos y proyectos en virtualenvwrapper?
Este ofrece la menor fricción y tiempo de entrega, y pude ponerlo en funcionamiento rápidamente. Gracias por su ayuda! –
No hay problema, contento para ayudar. –