Short version:
If NOT using xamlc to pre-compile xaml, what is bundled in the app to compile xaml at runtime? Is it dependent on the current at the time of the app build toolset outside of xamarin.forms nugets?
Long version:
We have a custom element inheriting from list view. We are using this element in xaml, and setting CachingStrategy in xaml, which obviously is a problem, and documented properly. But was not known back in the days when we did it (around Dec 2015).
Building the app with then available xamarin toolset (not sure about the version, as on the site I can go back only to versions from Mar 2016), the app worked w/o crashes.
Now, building the same codebase (NOTE: no changes in the xamarin forms nuget versions, etc), the app crashes. Enabling XAML pre-compile choke on the problem, so we did it right and the app works.
But - does that mean that some parts of the build toolchain is incorporated with the app? How we control for version stability on the build process, if that is the case?
XAMLC produces IL that is added to the assembly during the XamlCTask build step:
This tool is included in the Xamarin installer which of course are distribute by versioned installers, so if you are already Toolchain Versioning you do not need to do anything else...
IMHO, Toolchain versioning should include, at a minimum, all of the installed Xamarin components, Visual Studio components, MSBuild Tools, Xcode, Xcode cmd line tools, Android API SDKs (Tools, Build-Tools, Platform-tools), etc...
I.e. If you have a new employee start or a developer hard drive crash or need to deploy a new CI server, how do you rebuild that environment today so it matches the rest of your environment? If you are doing ad-hoc installs from scratch that are downloaded each time, you might be doing it wrong ;-)
As a DevOps, I personally, and for my clients, make offline backups of all the tool installers. This includes a snapshot of OS data drive that includes a developer's environment, a CI environment, a key signing environment, etc...
The information related to those tool versions (OS, tools and Nugets) are placed in a PowerShell Desired State Configuration file that is added to the Solution (.sln) root and is versioned like any other source file.
If I every need to rebuild a dev/build environment, running the DSC restores a complete environment to a physical box or VM ... For OS-X, typically we create and offline store the drive's .IMG (which we also create VMs in order to restore to).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With