对超过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>

对超过UInt16障碍的程序集信息进行版本控制

您可以从0滚动并重新启动,因此您的修订看起来像revision = 70000 % 50000

您也可以使用build作为源代码管理修订版的一部分,如build = 70000 / 50000

因此,在这个例子中它将是x.x.1.20000