tag route page net mvc for asp asp.net msbuild visual-studio-2012 msdeploy

asp.net - route - ¿Cómo usar la línea de comandos msbuild para implementar el proyecto del sitio web VS2012 sin precompilarlo?



select asp-for asp-items (2)

Para el proyecto del sitio web, el proceso de publicación no se incluye en el proceso de compilación. Para el proyecto del sitio web, ya que no hay un proceso formal de compilación, no hay nada para nosotros que podamos extender realmente.

Nota: los contenidos a continuación requieren tener VS 2012 (o VS2010 para el caso) y Azure SDK además de eso. Las características no se incluyeron en la versión RTM de VS2012.

Después de crear un perfil de publicación en VS, se crean los siguientes:

  1. Un perfil de publicación (archivo .pubxml) en App_Data / PublishProfiles
  2. Un website.publishproj en la raíz del sitio web

El propósito del website.publishproj es facilitar la publicación de línea de comando. Es un .csproj/.vbproj para .csproj/.vbproj que normalmente obtendría al usar un proyecto de aplicación web.

Si desea automatizar la publicación, puede usar un comando como el siguiente.

msbuild.exe website.publishproj /p:DeployOnBuild=true /p:PublishProfile=<profile-name-no-extension> /p:VisualStudioVersion=11.0

No debería tener que especificar qué objetivos invocados.

Con respecto al mensaje en VS de que el sitio está siendo precompilado, eso es un error. Se ejecuta a través de una compilación previa, pero la publicación utiliza la configuración en el perfil. Ese error debería haberse corregido en Visual Studio Update 1 . Después de instalarlo, no debería ver el paso de precompilación innecesario. Por favor, avíseme si todavía ve eso.

Heredé un gran proyecto de sitio web VS2012 (no aplicación web) y estoy tratando de automatizar su implementación. Hay toneladas de referencias circulares en el proyecto, así que para poder precompilar usando aspnet_compiler.exe tengo que activar los nombres fijos. El problema es que hace que la construcción tarde unos 20 minutos en mi máquina de desarrollador quad core, 16 gb ram, ssd. El desarrollador anterior no tuvo que lidiar con esto ya que simplemente copiaba toda la fuente al servidor web de producción.

Entonces, antes de abordar el problema de referencias circulares, quiero al menos implementar automáticamente el proyecto usando msdeploy. Puedo usar los perfiles de publicación en Visual Studio y hace exactamente lo que quiero:

  1. Crea las DLL referenciadas y las agrega al proyecto.
  2. ¿El web.config se transforma?
  3. Ni siquiera intento construir el sitio web sino solo paquetes en un archivo zip para mí.

Lo que no puedo entender por mi vida es cómo hacer que MSBuild.exe haga exactamente lo mismo.

MSBuild.exe WebProject.vs2012.sln /m /T:Build /p:Configuration=Release`;DeployOnBuild=true`;PublishProfile=TestDeploy

El comando anterior todavía intenta ejecutar aspnet_compiler que no es lo que quiero. El perfil de publicación dice que no debe precompilarse ... pero en los registros lo veo ejecutándolo.

Entonces, ¿cómo puedo usar msbuild para implementar un proyecto de sitio web sin precompilarlo?


Si bien la respuesta de Sayed Ibrahim Hashimi me ayudó un poco, aquí está lo que considero necesario para VS2012:

Después de instalar Azure SDK, creé un perfil de publicación de archivos, que creó una carpeta PublishProfiles en la carpeta Properties de mi proyecto. Dentro de esta nueva carpeta, se crearon dos archivos xml llamados my_sample_PublishProfile_Foo.pubxml y my_sample_PublishProfile_Foo.pubxml.user .

Usando el .pubxml, puedo publicar con msbuild así:

c:/Windows/Microsoft.NET/Framework/v4.0.30319/msbuild.exe "C:/.../UI.csproj" /p:DeployOnBuild=true /p:PublishProfile="C:/.../PublishProfiles/my_sample_PublishProfile_Foo.pubxml" /p:VisualStudioVersion=11.0

Recuerde ejecutar el archivo por lotes que contiene esta secuencia de comandos con privilegios de administrador.