Cómo usar la tarea de versión Svn para establecer la versión de un proyecto vb

Tengo una solución de Visual Studio 2008 donde el exe de salida principal es un exe de VB.Net Winforms que tiene varios dll VB.Net y C # vinculados desde la misma solución. La solución completa está bajo control de versión con subversión.

Ahora quiero actualizar automágicamente por files generados con el número actual de revisión svn. Para este propósito, encontré este prolijo proyecto: http://svnversiontasks.codeplex.com/ También necesita MSBuild.Communuity.Tasks para que esto funcione.

Hubo un ejemplo de msbuild sobre cómo actualizar el número de rev para cada proyecto en su solución que uso:

<Import Project="$(MSBuildExtensionsPath)\SvnTools.Targets\SvnTools.Tasks.VersionManagement.Tasks" /> <Target Name="build"> <CreateItem Include="../**/AssemblyInfo.vb;../**/AssemblyInfo.cs;../**/Properties/AssemblyInfo.cs"> <Output TaskParameter="Include" ItemName="AssemblyInfoFiles" /> </CreateItem> <CreateItem Include="../**/*.vdproj;*.vdproj"> <Output TaskParameter="Include" ItemName="DeploymentProjectFiles" /> </CreateItem> <UpdateVersion AssemblyInfoFiles="@(AssemblyInfoFiles)" DeploymentProjectFiles="@(DeploymentProjectFiles)" Format="yyyy.mm.dd.rev" /> <Exec Command="&quot;$(VS90COMNTOOLS)..\IDE\devenv&quot; ..\MyApp.sln /build" /> <RevertVersionChange AssemblyInfoFiles="@(AssemblyInfoFiles)" DeploymentProjectFiles="@(DeploymentProjectFiles)" /> </Target> 

Modifiqué el file original para include también el file AssemblyInfo.vb y lo guardé como un file msbuild.proj.

Sin embargo, si ejecuto msbuild desde la console, veo que los proyectos de C # están actualizados (también puedo confirmarlo desde las properties del dll de salida, pero mi proyecto de vb permanece sin cambios:

  Reverting version number change: ../App1\AssemblyInfo.vb Updating version number (to rev 0) for file: ../App1\AssemblyInfo.vb D:\Source\MyApp\MyAppDeploy\MyAppDeploy.csproj : warning : Version attribute not found, file not updated. Reverting version number change: ../App2\Properties\AssemblyInfo.cs Updating version number (to rev 0) for file: ../App2\Properties\AssemblyInfo.cs Successfully updated file. 

Tal vez la tarea no sea compatible con VB.Net. Pero tal vez alguien tiene una solución para esto …

Si observa el código fuente de la tarea UpdateVersion, debería usar Regex para analizar el file AssemblyInfo, por lo que no es sorprendente si no funciona con el file vb.

Puedes hacer lo que quieras, solo usando MSBuild.Community.Tasks:

  • SvnVersion para get la revisión (también podría usar la tarea SvnGetProperty desde SvnVersionTasks)
  • AssemblyInfo para generar la información de ensamblaje con la versión correcta. Estas tareas manejan VB.