2010-02-14 22 views
19

Quiero poder publicar automáticamente en una carpeta local cada vez que se crea un proyecto web asp.net mvc 2.¿Cómo publicar automáticamente un sitio web en compilación en Visual Studio 2008?

que utiliza Visual Studio 2008.

+0

Estoy de acuerdo con @Luhmann: ¿por qué querrías hacer esto? – PatrickSteele

+0

También estoy de acuerdo con @Luhmann.:) No solo eso, sino que probablemente publicará en modo de depuración, lo que no sería bueno probar/liberar. –

+2

Esto podría ser para un servidor de compilación donde se usa Visual Studio para compilar. Si bien no es ideal, tendría sentido hasta que sus compilaciones sean automáticas. – Jaxidian

Respuesta

5

La forma más fácil de automatizar la funcionalidad incluida en la acción de "publicación" de Visual Studio disponible en el menú Generar es usar el web deployment project. También hay uno para VS2005. Básicamente, se trata de un proyecto adicional que se agrega a su solución que se centrará en su proyecto web y cuando se construya, publicará su proyecto web como parte del proceso de compilación. Hace que sea muy simple construir automáticamente un sitio como parte de la compilación sin eliminar MSBuild (aunque MSBuild no es tan difícil).

+10

Aunque esto era perfectamente válido cuando se escribió, los proyectos de implementación web ya no están disponibles para Visual Studio 2012 y después de –

13

Bien podría hacerlo with MSBuild en un evento posterior a la generación.

¿Pero está seguro de que quiere hacer esto? Te ralentizará, y probablemente no necesites publicar para cada construcción? ¿Por qué no simplemente ejecutar el sitio en IIS en lugar de Cassini?

0

Opción 1: cambiar de Cruise Control a JetBrains TeamCity (¡no te arrepentirás!). En TeamCity hay una opción de Artefactos que ...

"Los artefactos son archivos producidos por una construcción. Después de terminar una construcción, TeamCity busca artefactos en el directorio de verificación de la construcción según los patrones de artefactos especificados. Los archivos coincidentes se cargan en el servidor, donde están disponibles para su descarga ".

Opción 2: Cree una tarea en Control de crucero para hacer una XCOPY después de que se complete la compilación.

<tasks> 
    <msbuild> 
     ... here's your main build ... 
    </msbuild> 

    <exec> 
    ... define your XCOPY or other executable task here ... 
    <buildTimeoutSeconds>900</buildTimeoutSeconds> 
    </exec> 

Opción 3: Crear un proyecto posterior a la generación de su solución y tienen una tarea en la que copiar los archivos a través de, agregar una condición en la que la tarea que para activarse únicamente cuando se ejecuta en el control de crucero (varias variables de entorno habilitar esto).

2

Así es como lo hago en mi proyecto de sitio web. Tenga en cuenta que esto se copiará en una carpeta; Si desea publicar a través de FTB, WebDav o SSH, debe utilizar la tarea Exec en lugar de la tarea Copy y especificar una herramienta de línea de comandos que pueda implementar los archivos a través del protocolo deseado.

Además, no puede editar la tarea AfterBuild desde la configuración del proyecto en VS IDE. Debe abrirlo en el Bloc de notas o en su editor de texto/XML favorito. (Incluso podría usar VS, si cierra la solución y la aplica para abrir el archivo con el editor XML :-))

También hay un objetivo de compilación que invoca el AspNetCompiler, que actualmente he desactivado, pero usted podría activarse fácilmente a través del valor de la propiedad MvcBuildViews.

<PropertyGroup> 
    <MvcBuildViews>false</MvcBuildViews> 
    <DropPath>..\..\drop\</DropPath> 
    </PropertyGroup> 
    <Target Name="AfterBuildCompiler" Condition="'$(MvcBuildViews)'=='true'"> 
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" /> 
    </Target> 
    <Target Name="AfterBuild" DependsOnTargets="AfterBuildCompiler"> 
    <ConvertToAbsolutePath Paths="$(DropPath)"> 
     <Output TaskParameter="AbsolutePaths" ItemName="FullDropPath" /> 
    </ConvertToAbsolutePath> 
    <Message Importance="High" Text="Binplacing -&gt; @(FullDropPath)" /> 
    <ItemGroup> 
     <Binaries Include="$(OutputPath)**\*.*" /> 
    </ItemGroup> 
    <Copy SkipUnchangedFiles="True" SourceFiles="@(Compile)" DestinationFiles="@(Compile->'$(DropPath)%(Identity)')" /> 
    <Copy SkipUnchangedFiles="True" SourceFiles="@(Content)" DestinationFiles="@(Content->'$(DropPath)%(Identity)')" /> 
    <Copy SkipUnchangedFiles="True" SourceFiles="@(EntityDeploy)" DestinationFiles="@(EntityDeploy->'$(DropPath)%(Identity)')" /> 
    <Copy SkipUnchangedFiles="True" SourceFiles="@(Binaries)" DestinationFiles="@(Binaries->'$(DropPath)%(Identity)')" /> 
    </Target> 
+1

BTW puede editar fácilmente el proyecto XML en Visual Studio si hace clic derecho en el proyecto, descárguelo y luego haga clic derecho en Editar en eso. Recargarlo cuando haya terminado. –

5

Paso 1. Asegúrese de que usted tiene un proyecto web.

Paso 2. Ir a Ver-> Barras de herramientas-> Web One Click Publicar.

El botón de botón web publicar en la barra de herramientas hará lo que quiera ... compilar y publicar en un solo paso.

+0

¡Excelente! ¡He estado queriendo saber cómo hacer esto por un tiempo! ¡Esto ahorra aproximadamente cien clics por semana! :) –

Cuestiones relacionadas