sourcesdirectory predefined number argumentos tfs msbuild versioning

tfs - predefined - msbuild terminal



Alineación de números de versión de ensamblaje con TFS Buildnumber (2)

Me pregunto si hay una manera de sincronizar los números de compilación (20080213.1) sin usar BuildNumberOverrideTarget donde tendría que generar mi propio número de compilación. Básicamente, quiero usar el generador de número de builds tfs predeterminado / incorporado, pero quiero acceder a él para alinear mis versiones de ensamblaje con él. ¿Se puede hacer esto y es una forma sensata de hacerlo de esta manera?


Lo que está pidiendo es muy sensato y hay varias maneras de lograrlo.

Personalmente, cuando hago esto no me gusta comprobar los archivos en el control de versiones que tienen el número generado por el servidor de compilación en ellos; simplemente presenta demasiados dolores de cabeza al fusionar código entre sucursales, pero también me gusta un número de versión conocido. para ser utilizado cuando un desarrollador hace una compilación de estación de trabajo versus un ensamblado derivado del servidor de compilación apropiado para que sea realmente fácil diferenciarlos.

Para obtener más información sobre cómo me gusta hacerlo, eche un vistazo a la wiki TFS Build Recipies:

o la publicación de mi blog sobre el tema

Espero que ayude,

Martín.


Sí tu puedes. En algún momento, posiblemente en AfterGet, puede usar BuildNumber y crear una tarea personalizada para actualizar los archivos AssemblyInfo.cs en su código fuente.

Nos hemos conectado a AfterGet y hemos causado que nuestro objetivo sea dependiente:

<Target Name="AfterGet" DependsOnTargets="VersionAssemblies" />

Nuestro objetivo VersionAssemblies extrae todos los archivos AssemblyInfo.cs de $ (SolutionRoot):

<CreateItem Include="$(SolutionRoot)/**/AssemblyInfo.cs;"> <Output TaskParameter="Include" ItemName="AssemblyInfos"/> </CreateItem>

los revisa:

<Exec Command="$(TfCommand) checkout &quot;AssemblyInfo.cs&quot; -r" WorkingDirectory="$(MSBuildProjectDirectory)/../sources" ContinueOnError="true"/>

los edita y reemplaza la versión del archivo con $ (BuildNumber):

<File.Replace Path="%(AssemblyInfos.FullPath)" NewValue="AssemblyFileVersion(&quot;$(BuildNumber)&quot;)" RegularExpression="AssemblyFileVersion/(/&quot;(/d+./d+./d+./d+)/&quot;/)" IgnoreCase="true" Force="true"/>

y luego verifica los archivos de nuevo en:

<Exec Command="$(TfCommand) checkin /override:&quot;Automated&quot; /comment:&quot;Update AssemblyInfo files to version number $(BuildNumber) - $(NoCICheckinComment) &quot; /noprompt &quot;AssemblyInfo.cs&quot; /recursive" WorkingDirectory="$(MSBuildProjectDirectory)/../sources" ContinueOnError="false"/>

Para la sustitución de las versiones de archivo utilizo la tarea File.Replace que viene con las tareas de Microsoft SDC en CodePlex.

También tenga en cuenta que si tiene una compilación que se desencadena en un check-in, cuando compruebe los archivos AssemblyInfo.cs, asegúrese de que el comentario incluya $ (NoCICheckinComment) ya que esto hace que TFS no active otra compilación, de lo contrario terminará en un ciclo de construcción infinito.