对超过UInt16障碍的程序集信息进行版本控制
本文关键字:信息 程序集 版本控制 UInt16 | 更新日期: 2023-09-27 17:57:32
过去,我通常使用变更集或svn编号来修改二进制文件,例如1.1.123.3其中较大的数字是源代码管理系统的变更集或rev。然而,随着我现在使用的系统,我们已经远远超过了类似70000多个变更集的uint障碍,因此当用作assembly版本属性或assembly文件版本属性时,会导致溢出和编译器错误。请参阅:http://msdn.microsoft.com/en-us/library/system.reflection.assemblyversionattribute.aspx
有没有其他策略仍然将二进制和变更集联系起来?
我调整了我的任务以使用给定的解决方案:
<Target Name="Version">
<!-- Changeset exceeds u16int so cannot be used in Versioninfo-->
<Attrib ReadOnly="false" Files="$(VersionFile)"/>
<!--Assembly version must be made of uint16 this means that the version number must less than 65536-->
<!-- current changest is way past this so i will make the number changset-50000 and add a number -->
<!-- so 70000 becomes 20000.1 and 100001 becomes 1.2-->
<PropertyGroup>
<Version>$(Branch).$([MSBuild]::Subtract($(ChangeSet),$(Offset))).$(OffsetCount)</Version>
</PropertyGroup>
<AssemblyInfo CodeLanguage="CS"
OutputFile="$(VersionFile)"
AssemblyCompany="$(Company)"
AssemblyProduct="$(Product)"
AssemblyCopyright="$(Copyright)"
AssemblyVersion="$(Version)"/>
<Attrib ReadOnly="true" Files="$(VersionFile)"/>
</Target>
您可以从0滚动并重新启动,因此您的修订看起来像revision = 70000 % 50000
。
您也可以使用build
作为源代码管理修订版的一部分,如build = 70000 / 50000
。
因此,在这个例子中它将是x.x.1.20000
。