Xamarin.Mac 3.6

version:3.6.0 releasedate:2017-08-21


  • The latest features and API requires Xcode 8.3 and the bundled macOS SDK;
  • Apple Xcode 8.3 requires a Mac running OSX 10.12 (Sierra) or newer;

What's New

This release is built upon our open sourced SDK, using the d15-3 branch, and include some additional IDE integration tools.

Target Framework Renaming

Since Xamarin.Mac 2.0 multiple target frameworks have been offered, optimized for different use cases.

While technically accurate at the time, their naming left much to be desired, however.

In Xamarin.Mac 3.6 they are being renamed to:

  • Modern (Optimized profile also powering Xamarin.iOS) replace Mobile.
  • Full (Extended desktop API compatibility) replaces XM 4.5.

The Modern and Full target frameworks behave exactly the same as before, and existing projects will require zero changes.

Framework linkage improvements

Previous versions of Xamarin.Mac did not correctly pass -framework and -weak_framework arguments to clang based upon bindings.

This prevented some APIs, such as LocalAuthentication from working correctly without work around.

While this change should be transparent to a majority of users, due to the possibility of breakage cause it is being documented here.

Please report any issues via bugzilla.

Miscellaneous Enhancements


  • pr2096 - Fix target framework detection issues in mmp
  • 43780 - Implement support for removing IsInformal from a protocol in a specific SDK version
  • pr2139 - [mtouch/mmp] Print assembly references in verbose mode
  • 52664 - [generator] Deriving from certain protocol interfaces causes the generator to throw a BI0000: NullReferenceException
  • 52665 - [generator] Deriving from certain protocol interfaces generates uncompilable code


  • pr1946 - NSActivityOptions.IdleDisplaySleepDisabled had wrong value
  • pr1946 - Add NSFileManager.UnmountVolume
  • pr1672 - [Mac] Update numerous availability tags from 10.12.1 to 10.12.2
  • pr2042 - Fix casting in NSApplication.NextEvent on 64-bit systems
  • pr2050 - Decorate NSWindow and NSSegmentedControl methods with NullAllowed attribute.
  • 32612 - WebView.SetSelectedDomRange

Bug Fixes

  • 57780 - [aot] Could not inflate generic type
  • 55147 - "Content" Build Action does not copy file into .app bundle when project is built with msbuild rather than xbuild
  • pr1977 - [msbuild] Fix running bgen for Xamarin.Mac. (#1977)
  • 53927 - MMP should ship debugging symbols just like mtouch
  • 54914 - Error executing task IBTool: An item with the same key has already been added
  • 36258 - There is no MAC pre-processor directive
  • 51753 - [msbuild] Add support for passing extra args to btouch
  • 53420 - Add unusual checks necessary to process obfuscated code
  • 54919 - Bug 54919 - NSFormatter subclass sample does not work in static registrar
  • 57119 - Code signing no longer expands wildcards * in distribution provisioning profiles
  • 55857 - Code that works in DEBUG; System.NotSupportedException in RELEASE
  • 55870 - Partial static registrar can't be used with custom managed exception marshaling


Additional fixes were released in Xamarin.Mac, including:

  • 57919 - [bcl] IsComObject() throws PlatformNotSupportedException and breaks uses of dynamic / SLE []
  • 58834 - [cecil] Fix MT2102 due to incorrect cecil throws ANE for some debugging symbols []


Additional fixes were released in Xamarin.Mac, including:

  • 44027 - [System.Net.Http] Chunked HTTP PUT times out. []
  • 58829 - [runtime] Many "[Mono] worker parking, [Mono] worker unparking" messages appearing in application output. []

API diff

The following documents contains a complete list of the API changes since our latest stable release: XM 3.4 (15.2)

Xamarin Workbook

If it's not already installed, install the Xamarin Workbooks app first. The workbook file should download automatically, but if it doesn't, just click to start the workbook download manually.