8/7/2008 23:06
El Bruno
[MSBUILD] HowTo: Publicar aplicaciones con ClickOnce

Buenas,
por unos días seguiré con algunos posts sobre MSBuild, ya que ahora que me ha tocado volver a configurarlos en Team Foundation Server 2008 me encuentro con algunas novedades muy interesantes.
Por ejemplo, hoy toca uno de los ejemplos más simples: ¿cómo publicar un proyecto con ClickOnce de forma automatizada en un proyecto de compilación?
Pues la respuesta es muy simple, y si una imagen vale más que 1000 palabras, un par de líneas de código, valen por lo menos 500 palabras:
1 <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
2 <!--
3 =================================
4 DEPLOY WITH CLICK ONCE
5 ================================= -->
6
7 <PropertyGroup>
8 <VersionMajor>1</VersionMajor>
9 <VersionMinor>0</VersionMinor>
10 <VersionService>0</VersionService>
11 <VersionBuild>6</VersionBuild>
12 </PropertyGroup>
13
14 <Target Name="AfterCompile" DependsOnTargets="BuildNumberOverrideTarget">
15
16 <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Name="StartClickOnce"
17 Message="Start Click Once Deploy to "\\TFSRTM08\ClickOnce\" Version=$(VersionMajor).$(VersionMinor).$(VersionBuild).$(VersionRevision)" Status="Succeeded" />
18
19 <MSBuild Projects="$(SolutionRoot)\ClickOnceDemo\ClickOnceDemo\ClickOnceDemo.csproj"
20 Properties="PublishDir=\\TFSRTM08\ClickOnce\;ApplicationVersion=$(VersionMajor).$(VersionMinor).$(VersionBuild).$(VersionRevision)"
21 Targets="Publish" />
22
23 <BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)" Name="EndClickOnce"
24 Message="End Click Once Deploy" Status="Succeeded" />
25
26 </Target>
este pequeño fragmento de código muestra un par de cosillas interesantes a tener en cuenta:
- Entre las líneas 7 y 12, defino un <PropertyGroup /> con los futuros valores para la versión de publicación (cuando tenga tiempo muestro como evolucionar un poco el post de Luis sobre una version incremental en cada build).
- Sobreescribo el <Target /> AfterCompile para introducir dentro del mismo las opciones de generación.
- En la línea 19 defino una tarea <MSBuild /> que es la encargada de publicar la aplicación, invocando el proyecto que queremos publicar con el atributo @Projects y las propiedades de publicación con el atributo @Properties.
- En el atributo @Properties se especifica el directorio de publicación y la versión de publicación.
- Una vez más utilizo <BuildStep /> para notificar en la ventana de progreso las acciones de publicación.
La siguiente imagen muestra un pequeño ejemplo de un proyecto de compilación. Como se puede ver dentro del mismo, los pasos de publicación con ClickOnce se ejecutan después de la compilación del proyecto.
Saludos @ Home
El Bruno
Crossposting from
ElBruno.com
Archivado en: Visual Studio Team System,VSTS,Team Foundation Server
Comparte este post: