2011-08-23 7 views
5

Estoy usando el MSBuild Community Task library para obtener la versión actual de SVN un conjunto que en mis archivos AssemblyInfo para obtener la revisión en el dll compilado final.Cómo configurar el número de versión de SVN en .NET dll utilizando la biblioteca de tarea de comunidad de MSBuild correctamente

Como sabes, la versión SVN puede ser como "28" o "28M" - si hay modificaciones. Si hago un mensaje MSBuild y saco la propiedad Revisión, veo que recibo un 28M después de la modificación, pero al actualizar el AsseblyInfo sigo obteniendo solo 28 en el número de versión ...?

Me gustaría tener el 28M en el número de versión para indicar que el dll está construido usando una modificación sin verificación. ¿Cómo puedo hacer que funcione?

<Target Name="Compile"> 
<SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="$(SvnTool)"> 
    <Output TaskParameter="Revision" PropertyName="Revision" /> 
</SvnVersion> 

<ItemGroup> 
    <AssemblyInfoFiles Include="x.a\Properties\AssemblyInfo.cs" /> 
    <AssemblyInfoFiles Include="x.b\Properties\AssemblyInfo.cs" /> 
</ItemGroup> 

<FileUpdate Files="@(AssemblyInfoFiles)" 
      Regex="(\d+)\.(\d+)\.(\d+)\.(\d+)" 
      ReplacementText="$(MajorVersion).$(MinorVersion).$(Revision).0" /> 

<MSBuild Projects="$(MSBuildProjectDirectory)\ConfigExplorer.sln" Targets="Rebuild" Properties="Configuration=$(BuildType);" /> 

+2

No puede tener 28M como número de revisión porque la revisión se declara como 'int' en la clase de Versión : 'public int Revision {get; } ' Pero puede usar, por ejemplo, el atributo AssemblyInformationalVersionAttribute para almacenar el texto que desee. –

Respuesta

4

.Net números de versión conjuntos se escriben con severidad. No son solo cadenas, sino ushorts, lo que significa que tienen un máximo de 65535 (consulte los documentos http://msdn.microsoft.com/en-us/library/cbf1574z.aspx). Si usas la revisión svn (como hice en un punto), tu construcción se romperá una vez que exceda ese número mágico.

Un esquema que también utilicé que indica construcciones desarrollador vs construcciones CI fue utilizar versiones en forma de {year}.{month}.{day}.{build} donde el número de compilación se especificó con un parámetro de compilación adicional. Esto nos dio la fecha de la compilación, así como también si era una versión de desarrollador (es decir, el último componente era cero)

+0

Ha señalado el problema del número de revisión de SVN, y si @Riri decide usar otra forma de generar el número de versión, tal vez lo encuentre útil, http://archive.msdn.microsoft.com/AssemblyInfoTaskvers –

Cuestiones relacionadas