Created
April 20, 2022 13:40
-
-
Save mgood7123/55784222b5ecf9b1c8389d706a4c5d6e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Target Name="PackIncremental" AfterTargets="Build"> | |
<PropertyGroup> | |
<!-- if version is greater than MAX_VALUE then version gets reset to 0 --> | |
<!-- set max value to uint16.MaxValue which is the limit of the assembly metadata format--> | |
<MAX_VALUE>65534</MAX_VALUE> | |
</PropertyGroup> | |
<!-- create file if it does not exist--> | |
<WriteLinesToFile Condition="!Exists('VERSION_MAJOR.txt')" File="VERSION_MAJOR.txt" Lines="0" Overwrite="true" Encoding="Unicode" /> | |
<WriteLinesToFile Condition="!Exists('VERSION_MINOR.txt')" File="VERSION_MINOR.txt" Lines="0" Overwrite="true" Encoding="Unicode" /> | |
<WriteLinesToFile Condition="!Exists('VERSION_BUILD.txt')" File="VERSION_BUILD.txt" Lines="0" Overwrite="true" Encoding="Unicode" /> | |
<!-- read current values--> | |
<ReadLinesFromFile File="VERSION_BUILD.txt"> | |
<Output TaskParameter="Lines" ItemName="VERSION_BUILD" /> | |
</ReadLinesFromFile> | |
<ReadLinesFromFile File="VERSION_MINOR.txt"> | |
<Output TaskParameter="Lines" ItemName="VERSION_MINOR" /> | |
</ReadLinesFromFile> | |
<ReadLinesFromFile File="VERSION_MAJOR.txt"> | |
<Output TaskParameter="Lines" ItemName="VERSION_MAJOR" /> | |
</ReadLinesFromFile> | |
<!-- initialize variables to the read values--> | |
<PropertyGroup> | |
<VERSION_BUILD>@(VERSION_BUILD)</VERSION_BUILD> | |
<VERSION_BUILD_TMP>@(VERSION_BUILD)</VERSION_BUILD_TMP> | |
<VERSION_MINOR>@(VERSION_MINOR)</VERSION_MINOR> | |
<VERSION_MINOR_TMP>@(VERSION_MINOR)</VERSION_MINOR_TMP> | |
<VERSION_MAJOR>@(VERSION_MAJOR)</VERSION_MAJOR> | |
<VERSION_MAJOR_TMP>@(VERSION_MAJOR)</VERSION_MAJOR_TMP> | |
</PropertyGroup> | |
<Message Text="init VERSION_BUILD: @(VERSION_BUILD)" /> | |
<Message Text="init VERSION_MINOR: @(VERSION_MINOR)" /> | |
<Message Text="init VERSION_MAJOR: @(VERSION_MAJOR)" /> | |
<!-- we cannot use arithmatic so to get around this we use DateTime --> | |
<!-- increment VERSION_BUILD--> | |
<PropertyGroup> | |
<VERSION_BUILD_TMP>@(VERSION_BUILD)</VERSION_BUILD_TMP> | |
<VERSION_BUILD>$([System.DateTime]::FromBinary($(VERSION_BUILD_TMP)).AddTicks(1).Ticks)</VERSION_BUILD> | |
<VERSION_BUILD_TMP>$(VERSION_BUILD)</VERSION_BUILD_TMP> | |
</PropertyGroup> | |
<!-- conditionally increment VERSION_MINOR and VERSION_MAJOR--> | |
<Message Condition="$(VERSION_BUILD) > $(MAX_VALUE)" Text="VERSION_BUILD > MAX_VALUE" /> | |
<PropertyGroup Condition="$(VERSION_BUILD) > $(MAX_VALUE)"> | |
<VERSION_BUILD>0</VERSION_BUILD> | |
<VERSION_MINOR_TMP>@(VERSION_MINOR)</VERSION_MINOR_TMP> | |
<VERSION_MINOR>$([System.DateTime]::FromBinary($(VERSION_MINOR_TMP)).AddTicks(1).Ticks)</VERSION_MINOR> | |
<VERSION_MINOR_TMP>$(VERSION_MINOR)</VERSION_MINOR_TMP> | |
</PropertyGroup> | |
<Message Condition="$(VERSION_MINOR) > $(MAX_VALUE)" Text="VERSION_MINOR > MAX_VALUE" /> | |
<PropertyGroup Condition="$(VERSION_MINOR) > $(MAX_VALUE)"> | |
<VERSION_MINOR>0</VERSION_MINOR> | |
<VERSION_MAJOR_TMP>@(VERSION_MAJOR)</VERSION_MAJOR_TMP> | |
<VERSION_MAJOR>$([System.DateTime]::FromBinary($(VERSION_MAJOR_TMP)).AddTicks(1).Ticks)</VERSION_MAJOR> | |
</PropertyGroup> | |
<Message Condition="$(VERSION_MAJOR) > $(MAX_VALUE)" Text="VERSION_MAJOR > MAX_VALUE" /> | |
<PropertyGroup Condition="$(VERSION_MAJOR) > $(MAX_VALUE)"> | |
<VERSION_BUILD>0</VERSION_BUILD> | |
<VERSION_MINOR>0</VERSION_MINOR> | |
<VERSION_MAJOR>0</VERSION_MAJOR> | |
</PropertyGroup> | |
<!-- conditionally write incremented versions to file --> | |
<WriteLinesToFile File="VERSION_BUILD.txt" Lines="$(VERSION_BUILD)" Overwrite="true" Encoding="Unicode" /> | |
<WriteLinesToFile Condition="$(VERSION_BUILD_TMP) > $(MAX_VALUE)" File="VERSION_MINOR.txt" Lines="$(VERSION_MINOR)" Overwrite="true" Encoding="Unicode" /> | |
<WriteLinesToFile Condition="$(VERSION_MINOR_TMP) > $(MAX_VALUE)" File="VERSION_MAJOR.txt" Lines="$(VERSION_MAJOR)" Overwrite="true" Encoding="Unicode" /> | |
<!-- maximum version number is 65534 for each value--> | |
<Message Text="pack VERSION_BUILD: @(VERSION_BUILD) -> $(VERSION_BUILD)" /> | |
<Message Text="pack VERSION_MINOR: @(VERSION_MINOR) -> $(VERSION_MINOR)" /> | |
<Message Text="pack VERSION_MAJOR: @(VERSION_MAJOR) -> $(VERSION_MAJOR)" /> | |
<Exec Command="dotnet pack $(MSBuildProjectDirectory)\$(MSBuildProjectName).csproj --no-build /p:Version=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_BUILD)"></Exec> | |
</Target> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment