# # A release branch requires updating the following six variables at the bottom of this file: # # IOS_PACKAGE_VERSION (major/minor/revision #) # MAC_PACKAGE_VERSION (major/minor/revision #) # # IOS_NUGET_VERSION (major/minor/patch #) # TVOS_NUGET_VERSION (major/minor/patch #) # WATCHOS_NUGET_VERSION (major/minor/patch #) # MACOS_NUGET_VERSION (major/minor/patch #) # # Update version numbers on main as well, to the next version # # # ** Version numbers ** # # Versions are defined as: Major.Minor.Revison.Build # # Major/minor (first/second numbers - max 2 digits each): # - Bump for major/minor releases. # # Revision (third number - max 2 digits): # - Reset to 0 after a major or minor bump (do not use 99 for Xcode preview # branches (use 0 instead), because otherwise we can't bump it further if # needed). # - Bump for service releases and previews. # - Bump if commit distance becomes > 999. # - Can also be bumped for other reasons (in particular there's no correlation # between Preview/Service Release #X and Revision #Y). # - Bumping revision to a high enough number to make it clear that there's # no correlation is a valid reason to bump. # - The revision must be bumped at the same time for both iOS and Mac # (otherwise the commit distance will differ). # - Also bump if the [IOS|MAC]_PACKAGE_VERSION lines change for any other # reason (otherwise we end up with repeating version numbers, since the # commit distance would restart at 0, while the other numbers wouldn't # change). # - Any other problem can also usually be solved by bumping the revision. # - Do not refactor the revision to a separate variable, because the reason # bumping the revision is a general solution for many problems is that it # also resets the commit distance (which wouldn't happen if the revision was # refactored to a separate variable). # # Build (fourth number - max 3 digits): # - Automatically calculated as the number of commits since the last time any # of the other three numbers changed (technically since the corresponding # line changed in git). # IOS_PACKAGE_VERSION=14.21.0.$(IOS_COMMIT_DISTANCE) MAC_PACKAGE_VERSION=7.15.0.$(MAC_COMMIT_DISTANCE) # # ** NuGet package version numbers ** # # See dotnet/VERSIONS.md. # # Rules: # * The first two numbers represent the major and minor version of the corresponding OS. # * Reset patch version (third number) to 100 every time either major or minor version is bumped. # * Bump last two digits of the patch version for service releases. # * Bump first digit of the patch version for feature releases (and reset the first two digits to 0) # # WARNING: Do **not** use versions higher than the available Xcode SDK or else we will have issues with mtouch (See https://github.com/xamarin/xamarin-macios/issues/7705) # When bumping the major macOS version in MACOS_NUGET_VERSION also update the macOS version where we execute on bots in jenkins/Jenkinsfile (in the 'node' element) IOS_NUGET_VERSION=14.5.100 TVOS_NUGET_VERSION=14.5.100 WATCHOS_NUGET_VERSION=7.4.100 MACOS_NUGET_VERSION=11.3.100 MACCATALYST_NUGET_VERSION=14.5.100 # Defines the default platform version if it's not specified in the TFM. The default should not change for a given .NET version: # * We release support for iOS 14.5 with .NET 6 # * Apple releases iOS 15.0, we're still using .NET 6. This default continues to be iOS 14.5 # * .NET 7 is shipped, and at this point we bump the default to iOS 15.0 # Basically: this should be the last OS version of the platform in question when the current major .NET version is first released to stable. # Ref: https://github.com/dotnet/designs/blob/8e6394406d44f75f30ea2259a425cb9e38d75b69/accepted/2020/net5/net5.md#os-versions DEFAULT_TARGET_PLATFORM_VERSION_IOS=13.6 DEFAULT_TARGET_PLATFORM_VERSION_TVOS=13.4 DEFAULT_TARGET_PLATFORM_VERSION_WATCHOS=6.2 DEFAULT_TARGET_PLATFORM_VERSION_MACOS=10.15 DEFAULT_TARGET_PLATFORM_VERSION_MACCATALYST=13.5