visual studio 2010 - visual - Ejecutar la transformación web.config desde la línea de comandos
vs code autoclose html (3)
¡Buen día!
Quiero tener la capacidad de crear un proyecto ASP.NET MVC 2 utilizando el cuadro de diálogo de publicación VS2010 y desde la línea de comandos.
Para la línea de comandos obtengo lo siguiente para 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 es que la transformación Web.config no se aplica (pero se agrega al paquete WebDeploy). No utilizo WebDeploy. ¿Hay alguna manera de aplicar transformaciones de Web.config?
¡Gracias!
Aquí hay otro enfoque, que usa msbuild para transformar el archivo Web.config:
http://sedodream.com/2010/04/26/ConfigTransformationsOutsideOfWebAppBuilds.aspx
En mis pruebas los resultados fueron mejores. Básicamente, creas un archivo de proyecto para realizar solo 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>
</Project>
Guarde el archivo de proyecto y luego aplique la transformación, ejecutando el siguiente comando:
msbuild trans.proj / t: Demo
Donde trans.proj es el nombre del archivo del proyecto y Demo es el nombre del objetivo de la tarea.
Creo que vale la pena mencionar que también puede usar con PowerShell el DLL que utiliza Visual Studio: Microsoft.Web.XmlTransform.dll
La secuencia de comandos de PowerShell, consulte: ¿Transformaciones de Web.Config fuera de Microsoft MSBuild?
Para cargar la DLL en lugar de copiar alrededor, me gusta esto (para que veas dónde encontrar esta DLL, al menos en mi situación en el trabajo tuvimos que buscar 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."
}
También puedes intentar usar la herramienta de transformación XDT:
Estoy usando esto en lugar de meterme con oscuros objetivos de msbuild.