2011-01-31 21 views
24

¡Buen día!Ejecute la transformación web.config desde la línea de comandos

Quiero tener la capacidad de construir el proyecto ASP.NET MVC 2 usando el diálogo de publicación VS2010 y desde la línea de comandos.

Para la línea de comandos me sale el siguiente a trabajar:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe .\SolutionFolder\MyProject.csproj /p:Configuration=Release;DeployOnBuild=True;PackageAsSingleFile=False;outdir=c:\_OutputFolder\ 

El único problema que tengo que la transformación Web.config no se aplican (pero agregó al paquete de WebDeploy). No uso WebDeploy. ¿Hay alguna forma de aplicar las transformaciones de Web.config?

Gracias!

+0

duplicado posible de [MSBuild Guión y VS2010 publican aplica Web.config Transform] (http://stackoverflow.com/questions/2905151/msbuild- script-and-vs2010-publish-apply-web-config-transform) –

Respuesta

22

También puede tratar de usar la herramienta Transformación TXD:

http://ctt.codeplex.com

estoy usando esto en vez de jugar con los objetivos msbuild oscuros.

+0

Parece ser la mejor solución hasta el momento. – artvolk

+0

Todos los enlaces de documentación están muertos en esta página ahora. – Luke

9

Aquí hay otro enfoque, que utiliza para transformar msbuild archivo Web.config:

http://sedodream.com/2010/04/26/ConfigTransformationsOutsideOfWebAppBuilds.aspx

En mis pruebas los resultados eran mejores. Básicamente, se crea un archivo de proyecto para realizar sólo una tarea TransformXML:

<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> 

+0

Esta es una manera asombrosamente simple de hacer esto. Reemplace 'v10.0' con' v15.0' para Visual Studio 2017 para permitirle encontrar el dll. – Luke

4

creo que vale la pena mencionar que también se puede utilizar con PowerShell la DLL que Visual Studio está utilizando: Microsoft.Web.XmlTransform.dll

script de PowerShell, ver: Web.Config transforms outside of Microsoft MSBuild?

para cargar el archivo DLL en lugar de copiar todo, lo hago así (por lo que se ve dónde encontrar este archivo DLL, por lo menos en mi escenario en el trabajo que tenía que mirar en marcha estas ubicaciones):

if (Test-Path "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.XmlTransform.dll") { 
    Add-Type -LiteralPath "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.XmlTransform.dll" 
} elseif (Test-Path "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.XmlTransform.dll") { 
    Add-Type -LiteralPath "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.XmlTransform.dll" 
} else { 
    throw [System.IO.FileNotFoundException] "Microsoft.Web.XmlTransform.dll not found." 
} 
Cuestiones relacionadas