visual tutorial studio instalar idioma funciones extensions español configurar code cambiar visual-studio-2010 command-line msdeploy web-publishing msbuild-wpp

visual studio 2010 - tutorial - VS2010 Web Publish versión de línea de comando de File System deploy



visual studio code funciones (6)

Gente,

En pocas palabras, quiero replicar este diálogo:

Es un proyecto Visual Studio 2010 ASP.Net MVC. Si ejecuto este comando, obtengo todos los archivos que quiero, incluidos los web.configs transformados en el directorio "C: / ToDeploy".

Quiero replicar esto en la línea de comando para poder usarlo para una compilación de entorno de control de calidad.

He visto varios artículos sobre cómo hacer esto en la línea de comandos para implementaciones remotas, pero solo quiero hacerlo para las implementaciones del sistema de archivos.

Sé que podría replicar esta funcionalidad usando tareas nAnt o secuencias de comandos de rastreos, pero quiero hacerlo usando este mecanismo, así que no me estoy repitiendo.

He investigado esto un poco más, y he encontrado estos enlaces, pero ninguno lo resuelve limpiamente:

¡Gracias por adelantado!


En VS2012 y superior, puede consultar perfiles de publicación existentes en su proyecto con msbuild 12.0, esto sería equivalente a hacer clic derecho y publicar ... seleccionando un perfil de publicación ("Mi Perfil" en este ejemplo):

msbuild C:/myproject/myproject.csproj "/P:DeployOnBuild=True;PublishProfile=MyProfile"


Mi solución para CCNET con la transformación Web.config :

<tasks> <msbuild> <executable>C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe</executable> <workingDirectory>E:/VersionesCC/Trunk_4/SBatz/Gertakariak_Orokorrak/GertakariakMS/Web</workingDirectory> <projectFile>GertakariakMSWeb2.vbproj</projectFile> <targets>Build</targets> <timeout>600</timeout> <logger>C:/Program Files/CruiseControl.NET/server/ThoughtWorks.CruiseControl.MSBuild.dll</logger> <buildArgs> /noconsolelogger /p:Configuration=Release /v:diag /p:DeployOnBuild=true /p:AutoParameterizationWebConfigConnectionStrings=false /p:DeployTarget=Package /p:_PackageTempDir=E:/Aplicaciones/GertakariakMS2/Web </buildArgs> </msbuild> </tasks>


Ok, finalmente descubrí esto.

La línea de comando que necesitas es:

msbuild path/to/your/webdirectory/YourWeb.csproj /p:Configuration=Debug;DeployOnBuild=True;PackageAsSingleFile=False

Puede cambiar el resultado del proyecto agregando una propiedad de outdir=c:/wherever/ en la sección / p :.

Esto creará la salida en:

path/to/your/webdirectory/obj/Debug/Package/PackageTmp/

A continuación, puede copiar esos archivos desde el directorio anterior utilizando el método que desee.

Tengo todo esto funcionando como una tarea de rastrillo de rubí con Albacore . Estoy tratando de hacerlo todo para poder ponerlo como una contribución al proyecto. Pero si alguien quiere el código antes de eso, házmelo saber.

Otra arruga que encontré fue que estaba poniendo parámetros Tokenized en el Web.config. Si no necesita esa característica, asegúrese de agregar:

/p:AutoParameterizationWebConfigConnectionStrings=false


Pensé en publicar otra solución que encontré, actualicé esta solución para incluir un archivo de registro.

Esto es similar a Publicar una aplicación web desde la línea de comandos , pero acaba de limpiar y agregar el archivo de registro. también echa un vistazo a la fuente original http://www.digitallycreated.net/Blog/59/locally-publishing-a-vs2010-asp.net-web-application-using-msbuild

Cree un MSBuild_publish_site.bat (asígnele el nombre) en la raíz de su proyecto de aplicación web

set msBuildDir=%WINDIR%/Microsoft.NET/Framework/v4.0.30319 set destPath=C:/Publish/MyWebBasedApp/ :: clear existing publish folder RD /S /Q "%destPath%" call %msBuildDir%/msbuild.exe MyWebBasedApp.csproj "/p:Configuration=Debug;PublishDestination=%destPath%;AutoParameterizationWebConfigConnectionStrings=False" /t:PublishToFileSystem /l:FileLogger,Microsoft.Build.Engine;logfile=Manual_MSBuild_Publish_LOG.log set msBuildDir= set destPath=

Actualice su archivo de proyecto de aplicación web MyWebBasedApp.csproj agregando el siguiente xml bajo la etiqueta <Import Project=

<Target Name="PublishToFileSystem" DependsOnTargets="PipelinePreDeployCopyAllFilesToOneFolder"> <Error Condition="''$(PublishDestination)''==''''" Text="The PublishDestination property must be set to the intended publishing destination." /> <MakeDir Condition="!Exists($(PublishDestination))" Directories="$(PublishDestination)" /> <ItemGroup> <PublishFiles Include="$(_PackageTempDir)/**/*.*" /> </ItemGroup> <Copy SourceFiles="@(PublishFiles)" DestinationFiles="@(PublishFiles->''$(PublishDestination)/%(RecursiveDir)%(Filename)%(Extension)'')" SkipUnchangedFiles="True" /> </Target>

esto funciona mejor para mí que otras soluciones.

Revisa lo siguiente para obtener más información:

1) http://www.digitallycreated.net/Blog/59/locally-publishing-a-vs2010-asp.net-web-application-using-msbuild

2) Publicar una aplicación web desde la línea de comando

3) Construir el proyecto de Visual Studio a través de la línea de comando


Tengo una solución para Visual Studio 2012: https://.com/a/15387814/2164198

¡Sin embargo, funciona sin Visual Studio instalado en absoluto! (ver ACTUALIZACIÓN ). Todavía no verifiqué si se pueden obtener todas las cosas necesarias de Visual Studio Express 2012 para la instalación web.


Un archivo completo de msbuild con inspiración de CubanX

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="Publish"> <RemoveDir Directories="../build/Release/Web/" ContinueOnError="true" /> <MSBuild Projects="TheWebSite.csproj" Targets="ResolveReferences;_CopyWebApplication" Properties="Configuration=Release;WebProjectOutputDir=../build/Release/Web;OutDir=../build/Release/Web/bin/" /> </Target> <Target Name="Build" DependsOnTargets="Publish;"> </Target> </Project>

Esto coloca el sitio web publicado en la carpeta Web .. / build / Release