通过UInt16屏障对装配信息进行版本控制

Jam*_*den 2 .net c# msbuild version-control

在过去,我通常使用变更集或svn编号对二进制文件进行版本控制,例如1.1.123.3,其中大数字是源控制系统的变更集或转速.但是,随着系统即时使用,我们已经远远超过70000+更改集的uint障碍,因此当用作asssembly版本属性或程序集文件版本属性时会导致溢出和编译器错误.请参阅: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>
Run Code Online (Sandbox Code Playgroud)

Ale*_*Aza 5

您可以从0翻转并重新启动,因此您的修订将如下所示revision = 70000 % 50000.

您也可以使用build源代码控制修订版的一部分build = 70000 / 50000.

因此,结果就是x.x.1.20000这个例子.