Pregunta

Quiero conseguir web.config transformaciones de trabajo a nivel local, pero al parecer las transformaciones sólo se producen cuando se hace despliegues.

¿Alguien sabe de una manera de ejecutar el objetivo msbuild "TransformWebConfig" sin que ir a través de la "reconstrucción" del proceso y también especificar y carpeta de salida donde escupir el web.config transformado?

Editar : El uso de la respuesta de Sayed, he creado un archivo .bat que hacer correr la tarea para mí:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Msbuild.exe "D:\Demo\Transformation.proj" /t:TransformWebConfig 

copy /Y  "D:\Demo\Web.config" "D:\MyProject\Web.config" 

del ""D:\Demo\Web.config"

la "Transformation.proj" es una copia del fragmento de código de Sayed en la respuesta a continuación. Sólo especifique el origen, destino y destino para la transformación. El nuevo archivo, en este caso, la transformada "web.config" estará en el "D: \ demo" directorio. Estoy simplemente copiándolo sobre sobrescribir web.config de mi proyecto y, finalmente, eliminar el archivo generado en la carpeta "demo".

Además, he creado una macro para ejecutar este archivo por lotes y realizar la tranformación para mí:

Public Module DoTransform
    Sub RunTransformBatchFile()
        Try
          Process.Start("D:\Demo\RunTransform.bat")
        Catch ex As System.Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Module

También puede añadir un botón en la barra de herramientas para ejecutar este lote y / o asignar una tecla de acceso directo para ejecutar.

¿Fue útil?

Solución

Si desea transformar un archivo de configuración sin necesidad de utilizar la Publicación en la Web de la tubería, entonces sólo tiene que utilizar la tarea TransformXml manualmente. He escrito una entrada de blog detallada sobre esto en http://sedodream.com/2010/ 04/26 / ConfigTransformationsOutsideOfWebAppBuilds.aspx , pero aquí están las altas luces:

<Project ToolsVersion="4.0" DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <UsingTask TaskName="TransformXml"
             AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>

    <Target Name="Demo">
        <TransformXml Source="app.config"
                      Transform="Transform.xml"
                      Destination="app.prod.config"/>
    </Target>
</Project>

A continuación se transformo manualmente el archivo app.config usando el archivo transform.xml y el archivo de destino es app.prod.config.

Una cosa que usted ha mencionado estaba siendo capaz de hacer la transformación a nivel local cuando se ejecuta la aplicación. La razón por la que sólo realizan la transformación en paquete / publicamos es porque si transformamos web.config sí entonces la próxima vez que depurar su aplicación para el web.config se transforma de nuevo. Así por ejemplo, si en su web.debug.config que tiene la transformación de añadir un valor de configuración, todo está bien la primera vez que se agrega eso, pero entonces la próxima vez que su carrera / depurar su aplicación se conseguirá agregado de nuevo. Así que lo mejor es evitar eso.

Otros consejos

Si está utilizando Visual Studio 2015, puede simplemente haga clic derecho en la transformación del entorno deseado y haga clic en "Ver vista previa" ... A continuación, generar el archivo de transformación, y se puede copiar y pegar en el que la normalidad archivo Web.config para fines de depuración. Eso sí, no cometerlo!

Si está utilizando Visual Studio 2013, puede instalar la extensión SlowCheetah - Transforma XML

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top