2011-01-19 10 views
9

Estoy trabajando en una secuencia de comandos de compilación para un proyecto de función web Azure. La secuencia de comandos se ejecutará en un servidor de compilación, por lo que usar VS no es un iniciador.Uso de la tarea MSBuild y CSPack para empaquetar las funciones de Azure

Puedo construir el proyecto usando MSBuild y usar CmdLets for Azure para manejar la implementación (a través de PowerShell). La parte que falta es la creación del paquete en la nube. Puedo usar la herramienta CSPack.exe que se incluye en el SDK, pero me gustaría usar las tareas de MSBuild si es posible, de esa manera puedo aprovechar las opciones de configuración de compilación e integrar la creación del paquete con el resto del proceso.

He buscado en el proyecto de despliegue web de Azure, pero no puedo encontrar ninguna referencia a la tarea de CSPack. Puede haber algo de magia VS sucediendo aquí, a menos que me falta el archivo que hace referencia a las tareas de CSPack/Azure. El ensamblado que estoy buscando es Microsoft.ServiceHosting.Tools.MSBuildTasks.dll - reflector me dice que la tarea CSPack está allí.

¿Alguien ha utilizado con éxito la tarea CSPack MSBuild? Si es así, ¡cualquier sugerencia sobre cómo usarlo sería muy útil!

Si estoy ladrando el árbol completamente equivocado, ¡por favor hágamelo saber!

Gracias, Erick

Respuesta

7

La tarea CSpack es parte de Microsoft.CloudService.Targets archivo msbuild. En una instalación por defecto esto está en

C: \ Archivos de programa (x86) \ MSBUILD \ Microsoft \ CloudService \ 1.0 \ Visual Studio 10 \

Verá la referencia a esto en cualquier .ccproj (nube servicio) proyecto

<CloudExtensionsDir Condition=" '$(CloudExtensionsDir)' == '' ">$(MSBuildExtensionsPath)\Microsoft\Cloud Service\1.0\Visual Studio 10.0\</CloudExtensionsDir> 

<Import Project="$(CloudExtensionsDir)Microsoft.CloudService.targets" /> 

A partir de ahí puede obtener el formato básico y varias variaciones. A modo de ejemplo, este es el objetivo CorePublish usarlo

<CSPack 
    ServiceDefinitionFile="@(ServiceDefinitionCopy)" 
    Output="$(OutDir)Publish\$(ProjectName).cspkg" 
    PackRoles="@(Roles)" 
    SiteMapping="@(SiteMapping)" 
    RoleProperties="@(RoleProperties)" 
    CopyOnly="false" 
    > 
</CSPack> 

Nos invocar esta forma de generar nuestros paquetes en la nube. Si aquí hay un escenario particular sobre el que necesita asesoramiento, proporcione ese detalle. Nuestro uso es bastante común, simplemente (como usted) no teníamos interés en usar msbuild para invocar a la línea de comandos.

Así reconstruyendo todo juntos, uno puede simplemente emitir

msbuild MyAzureProject.ccproj /t:CorePublish

o si tiene una solución con las carpetas de múltiples niveles del proyecto y desea empaquetar el comunicado de los bits

msbuild MyAzureProject\MyAzureProject.ccproj /t:CorePublish /Property:SolutionDir=..\ /p:Configuration=Release

+0

Taylor, gracias por la respuesta. ¿Sería capaz de publicar el resto del archivo MSBuild (con solo las partes azules)? Eso sería muy util. Gracias - Erick –

+0

seguro, lo voy a armar más tarde hoy y obtener algo para ti esta noche –

+0

@Taylor ¿alguna vez tuviste la oportunidad de armar eso? Tengo un problema para que msBuild cree el paquete – Joe

1

estoy usando pero tengo Visual Studio y el Azure SDK 1.3 instalado en los servidores de construcción. No pude encontrar ninguna forma de evitar eso. Puede salirse con la suya usando Visual Studio Express en los servidores de compilación, así que tal vez quiera intentarlo primero.

+0

Puede ¿Me das un ejemplo de cómo estás usando las tareas? Ese es el primer problema que estoy tratando de resolver, ya que no he encontrado ningún ejemplo. –

+0

Solo estoy usando los tipos de proyectos en la nube en mi servidor de compilación. Llamar a cspack directamente está en mi lista de cosas por hacer, pero todavía tiene que llegar a la cima. –

1

sólo estoy usando

<Exec Command="$(PackageCommand)" WorkingDirectory="$(BuildProjectFolderPath)\..\main\source\" /> 

donde PackageCommand es lo que se utiliza en la línea de comandos para llamar cspack.exe.

+0

Gracias por la respuesta Carlos. Esperaba evitar usar la línea de comando, pero puedo terminar allí. –

Cuestiones relacionadas