asp.net asp.net-mvc-2 msbuild publishing

asp.net - MSBuild DeployOnBuild=verdadero no publicado



asp.net-mvc-2 publishing (4)

Tengo una aplicación web Visual Studio 2010 MVC2 que estoy compilando a través de la línea de comando usando Hudson. Me gustaría hacer que Hudson publique una salida web, así que agregué las etiquetas DeployOnBuild = true y CreatePackageOnPublish = True a mi línea de comando.

Mi comando es:

C:/Windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe /target:Clean,Build /property:Configuration=Debug;DeployOnBuild=True;CreatePackageOnPublish=True; [my project name.csproj]

Ejecutar este comando en mi máquina de desarrollo (Windows 7) publica exitosamente un resultado web en /obj/Debug/Package/PackageTmp/ . Pero al ejecutarlo en el servidor de Hudson (WS 2008) se compila con éxito, pero no se publica. Mismo comando, misma versión de MSBuild, mismo código fuente.

/t:Publish objetivo /t:Publish , que me da una respuesta de Proyecto omitido imprevisible, como he visto en las publicaciones de otras personas.

Intenté también agregar las DeployOnBuild=True y CreatePackageOnPublish=True en mi archivo de proyecto, y sin cambios.

¿Alguna idea de por qué esto no está publicando? ¿Estoy usando estas etiquetas incorrectamente? Estoy seguro de que hay algo aquí que simplemente no estoy viendo.


Además de la respuesta de Brian Hinchey, descubrí que también necesitaba agregar mi llamada por lotes msbuild con el parámetro adicional VisualStudioVersion para que la versión correcta y la ruta en el agente de compilación (TeamCity en mi caso) para Microsoft.WebApplication.targets fueran llamado. Sin este parámetro, el paso de despliegue y publicación web no se completó y mi lote se completó con éxito con un código 0 devuelto haciendo el análisis muy difícil, incluso con el indicador / verbosity adjunto para ''depurar'' la compilación. Este punto es hecho por SAYED IBRAHIM HASHIMI en su sitio: http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx

El escenario para mi caso era que tenía la compatibilidad de Visual Studio habilitada en mi proyecto web de MVC para poder abrir el proyecto en VS2010 o 2012 (como dice Sayed en el enlace de arriba), así que estoy desarrollando localmente en VS2012 mientras que el agente de desarrollo TeamCity tiene la estructura web VS 2010 e implementa objetivos.


Me encontré con esto con VS2012 - terminé instalando herramientas de desarrollador web en el servidor de compilación y eso lo solucionó.


Parece que las condiciones para ejecutar el objetivo de publicación no están satisfechas.

1) Puede tener diferentes rutas de publicación

2) La condición para ejecutar el objetivo de publicación es falsa

Para verificar ambos, llame a su comando con flag / v: diag . Busque por destino "Publicar" e intente descubrir qué sucede realmente. Se verá como

Target "ExecuteT4Templates: (TargetId:144)" in file "D:/App/App.csproj" from project "D:/App/App.csproj": Skipping target "ExecuteT4Templates" because all output files are up-to-date with respect to the input files. Input files: D:/App/App.exe//App_Config/Configuration.tt;D:/App/App.exe//App_Config/Debug.App.tt;obj//Debug.t4lastbuild Output files: D:/App/App.exe//App.config Done building target "ExecuteT4Templates" in project "App.csproj".: (TargetId:144)


Suponiendo que no tiene instalado Visual Studio 2010 en su servidor Hudson, es posible que le falte el archivo de publicación de "destinos". Después de muchos golpes cuerpo a cuerpo, finalmente resolví esto.

Por un buen tiempo he sabido que necesitaba copiar el directorio

C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v10.0 / WebApplications

desde mi máquina local con VS2010 a mi servidor para poder construir el proyecto. Pero para hacer que el proyecto también se publicara, también necesitaba copiar el directorio

C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v10.0 / Web

Nota: En mi caso, actualmente estoy asignando esas carpetas a mi control de origen y cambiando el valor <MSBuildExtensionsPath32> en mi archivo csproj para que apunte a estas carpetas desprotegidas (de modo que hay un paso menos al preparar un servidor). Esto no es necesario para que funcione, pero es posible que desee considerar esto después de resolver su problema.

ACTUALIZACIÓN: Entonces, después de que hice lo anterior, la compilación se quejó de que no podía encontrar "Microsoft.Web.Deployment.dll". Para resolver esto, necesité instalar Microsoft Web Deploy v2.0 en el servidor , aunque solo estoy publicando en el sistema de archivos . Creo que puedo ver la lógica en esto.

ACTUALIZACIÓN: descubrí que la instalación de "Visual Studio 2010 Shell (integrado)" a través del instalador de la plataforma web IIS instalará los objetivos de compilación necesarios. Esto parece un buen compromiso entre no tener toda la aplicación de Visual Studio instalada en su servidor y no copiar manualmente carpetas aparentemente arbitrarias a su servidor desde su máquina de desarrollo.