Cambie solo el número de revisión en AssemblyInfo.cs con la tarea MSBuild FileUpdate
msbuild-task (2)
Qué tal esto:
<FileUpdate Files="Properties/AssemblyInfo.cs"
Regex="(/d+)/.(/d+)/.(/d+)/.(/d+)"
ReplacementText="$1.$2.$3.$(Revision)" />
Necesito cambiar solo el número de revisión de un archivo AssemblyInfo.cs
. El número de versión tiene el formato Major.Minor.Build.Revision, por ejemplo, 1.4.6.0
.
Actualmente cambio la versión con la tarea FileUpdate
(del proyecto de tareas de comunidad de MSBuild ) y la siguiente expresión regular:
<FileUpdate Files="@(AssemblyResult)"
Regex=''(/[/s*assembly:/s*AssemblyVersion/(/s*"[^/.]+/.[^/.]+)/.([^/.]+)(/.)([^/.]+)("/)/s*/])''
ReplacementText=''[assembly: AssemblyVersion("$(AssemblyMajorNumber).$(AssemblyMinorNumber).$(AssemblyBuildNumber).$(Revision)")]'' />
Ahora necesito actualizar solo el número de revisión y dejar sin cambios el major, el minor y el build. Entonces, ¿hay alguna tarea para hacer esto? ¿O se puede hacer con una expresión regular? ¿Cuál sería la expresión regular entonces?
Uso el siguiente objetivo para hacer esto:
<Target Name="UpdateAssemblyInfoVersion" DependsOnTargets="GetRevision">
<CreateItem Include="**/AssemblyInfo.vb">
<Output TaskParameter="Include" ItemName="AssemblyFiles"/>
</CreateItem>
<Time>
<Output TaskParameter="Year" PropertyName="Year" />
</Time>
<FileUpdate Files="@(AssemblyFiles)"
Multiline="true"
Singleline="false"
Regex="(AssemblyVersion|AssemblyFileVersionAttribute|AssemblyFileVersion)/("([0-9]+/.[0-9]+/.[0-9]+)(/.[0-9]+)?"/)"
ReplacementText="$1("$2.$(Revision)")" />
<FileUpdate Files="@(AssemblyFiles)"
Multiline="true"
Singleline="false"
Regex="AssemblyCompany/(".*"/)"
ReplacementText="AssemblyCompany("My Company")" />
<FileUpdate Files="@(AssemblyFiles)"
Multiline="true"
Singleline="false"
Regex="AssemblyCopyright/(".*"/)"
ReplacementText="AssemblyCopyright("Copyright © 2009-$(Year) My Company")" />
</Target>
Esto reemplaza la revisión (4to número) en cualquiera de los archivos de AssemblyInfo (en múltiples proyectos). Examina las etiquetas AssemblyVersion AssemblyFileVersionAttribute y AssemblyFileVersion y utiliza la propiedad $ (Revisión) MSBuild para el número (Tengo otro objetivo llamado GetRevision que obtiene esto de SVN y establece la propiedad, por lo que esta depende de ese objetivo). El regex regex maneja los números de versión que tienen 3 o 4 dígitos (tenía un grupo de 3 solamente, por la razón que sea).
También establece / sobrescribe la información de la Compañía y de los derechos de autor, y la establece en "Mi empresa". Para los derechos de autor, era flojo y lo hice para que siempre use el año actual, así que no tengo que acordarme de actualizarlo cada año (por lo que dice, por ejemplo, "Copyright (c) 2009-2010 My Company").
Este objetivo requiere la extensión de tareas de MSBuild Community .
Como cuestión de política, todo lo registrado en SVN tiene .0 como último número, y solo el servidor de CI cambia este valor cuando está haciendo una compilación. Esto nos permite ver rápidamente la diferencia entre las compilaciones creadas por los desarrolladores (que nunca se les permite ir a los clientes) y las compilaciones "oficiales" creadas por el servidor de CI.