One of the unique things about Xamarin is the ability to share large chunks of code between all of the mobile platforms. This provides an unique opportunity to version mobile applications as a complete unit reglardless of the destination app store or mobile platform.
A Xamarin application typically consists of a core library where all the business logic is stored and tiny per-platform library implementations of non-portable services (i.e.
CoreLocationService : ILocationService) and finally the actual applications itself.
Which can be expressed using the Semantic Versioning (SemVer) standard as follows:
Here's my recommendations for SemVer / versioning #Xamarin. applications. >$owned-by-marketing.$pcl-change.$platform-change.$buildepoch<— Geoffrey Huntley (@GeoffreyHuntley) October 11, 2016
MAJOR.MINOR.PATCH.META aka BUSINESS.PORTABLE.PLATFORM.EPOCH
When determining what to increment when there are multiple changes, choose the highest kind of change and reset the suffix numbers back to zero. The MAJOR number is owned by the business and should only be incremented as directed as per your sales and marketing plan.
- directed by the business as per your sales and marketing strategy
- any shared logic change (i.e. changes in portable class library) that is able to be shared across all plaforms
- any non-portable user interface change (i.e. pixel pushing native ui or changing custom renderer)
- any core application change (i.e. upgrading platform analytics dependency)
- any platform service change (i.e.
- every time a new build is produced