VS2010 Web Publish versión de línea de comandos del Sistema de archivos deploy


Amigos,

En pocas palabras, quiero replicar este diálogo: texto alt

Es un Visual Studio 2010 ASP.Net Proyecto MVC. Si ejecuto este comando, obtengo todos los archivos que quiero, incluida la web transformada.configs en el "C:\ToDeploy" directorio.

Quiero replicar esto en la línea de comandos para poder usarlo para una compilación de entorno de QA.

He visto varios artículos sobre cómo hacer esto en la línea de comandos para Implementaciones remotas, pero solo quiero hacerlo para File Despliega el sistema.

Sé que podría replicar esta funcionalidad usando tareas nAnt o scripts de rake, 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 de ellos lo resuelve limpiamente:

Gracias de antemano!

Author: Community, 2010-10-27

6 answers

Bien, finalmente lo descubrí.

La línea de comandos que necesita es:

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

Puede cambiar a dónde sale el 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/

Luego puede copiar esos archivos del directorio anterior utilizando el método que desee.

Tengo todo esto trabajando como una tarea ruby rake usando Albacore. Estoy tratando de hacerlo todo para que pueda ponerlo como un 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 tokenizados en la Web.config. Si no necesita esa función, asegúrese de agregar:

/p:AutoParameterizationWebConfigConnectionStrings=false
 46
Author: CubanX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-21 20:03:08

Pensé en publicar otra solución que encontré, he actualizado 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 solo limpiado y añadido 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 (nombre lo que sea) en la raíz de su aplicación web proyecto

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 añadiendo 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.

Echa un vistazo a 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 comandos

3) Construir Proyecto de Visual Studio a través de la línea de comandos

 11
Author: zulucoda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:17:45

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

<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>
 1
Author: Asier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-08 08:36:53

En VS2012 y superiores, puede hacer referencia a los perfiles existentes publicar en su proyecto con msbuild 12.0, esto sería equivalente a hacer clic derecho y publicar... seleccionar un perfil de publicación ("MyProfile" en este ejemplo):

msbuild C:\myproject\myproject.csproj "/P:DeployOnBuild=True;PublishProfile=MyProfile"
 1
Author: bubbassauro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-26 19:58:52

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

Sin embargo, funciona sin Visual Studio instalado en absoluto! (véase ACTUALIZACIÓN). Todavía no he comprobado si uno puede obtener todas las cosas necesarias de Visual Studio Express 2012 para la instalación web.

 0
Author: Ivan Samygin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:17:45

Un archivo msbuild completo inspirado en 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 Web..\build \ Release folder

 -1
Author: outofcoolnames,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-12 11:31:31