visual studio app visual-studio deployment slowcheetah

visual-studio - app - config transform visual studio



Transformaciones de app.config (5)

Puede usar la funcionalidad de transformación XML con cualquier archivo XML; lo hacemos todo el tiempo. Está disponible a través de una tarea de MSBuild.

Intente agregar lo siguiente a su script de compilación:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)/Microsoft/VisualStudio/v10.0/Web/Microsoft.Web.Publishing.Tasks.dll"/> <TransformXml Source="Path/To/Your/Xml.config" Transform="Path/To/Your/Xml.$(Configuration).config" Destination="Path/To/Your/Output.config" />

Soy un gran admirador de la incorporación de las transformaciones web.config en Visual Studio 2010. Vea también la reciente charla de Scott Hanselman en MIX2011 .

Lo que apesta es que esta funcionalidad (al menos parece) solo está disponible para proyectos web.

En nuestra solución, tenemos varios servicios de Windows que se conectan a una base de datos diferente en función del entorno en el que se implementan.

¿Alguien ha encontrado una forma agradable y ordenada de lograr una funcionalidad similar de ''app.config transformation''?

Nota: Estamos utilizando TFS 2010 para construir nuestras soluciones de manera continua.


Usando la respuesta de Luke Bennett para ponerme en el camino correcto. Encontré que esta es la respuesta para nosotros.

FTA (ver enlace para fragmentos de código):

  1. Agregue una nueva propiedad ProjectConfigFileName que apunte a su archivo App.Config

  2. Agregue una versión de App.Config para cada configuración, es decir, App.Debug.config Para anidarlas en App.Config, edite su archivo csproj,

  3. Importe Microsoft.Web.Publishing.targets en su archivo csproj justo después de la importación de Microsoft.CSharp.targets.

  4. Llame a la tarea TransformXml en su destino AfterBuild. Tenga en cuenta que los objetivos BeforeBuild y AfterBuild están comentados por defecto.


Me doy cuenta de que ya tiene una respuesta, pero me encontré con SlowCheetah esta mañana, que es la mejor implementación que he visto hasta la fecha. También hay una publicación de blog sobre cómo ejecutar esto desde un servidor de CI.



Si tiene varios ensamblados de cliente y no desea duplicar los mismos datos de configuración, creé Profigurator . Tomará un archivo JSON como entrada y aplicará las configuraciones a un app.config o web.config.

Es un poco difícil mientras escribo esto, pero actualmente lo estoy usando en un sistema de producción para despliegues y funciona muy bien.