Xamarin.Mac Extension Support

PDF for offline use
Related Articles:
Related Samples:
Related SDKs:

Let us know how you feel about this


0/250

last updated: 2016-11

This article covers extension support in Xamarin.Mac version 2.10 (and greater).

Contents

This article will cover the following topics in detail:

Xamarin.Mac Extension Support

In Xamarin.Mac 2.10 preview support was added for multiple macOS extension points:

  • Finder
  • Share
  • Today

Limitations and Known Issues

The following are the limitations and know issues that can occur when developing extensions in Xamarin.Mac:

  • There is currently no debugging support in Xamarin Studio. All debugging will need to be done via NSLog and the Console. See the tips section below for details.
  • Extensions must be contained in a host application, which when run one time with register with the system. They must then be enabled in the Extension section of System Preferences.
  • Some extension crashes may destabilize the host application and cause strange behavior. In particular, Finder and the the Today section of the Notification Center may become “jammed” and become unresponsive. This has been experienced in extension projects in Xcode as well, and currently appears unrelated to Xamarin.Mac. Often this can be seen in the system log (via Console, see Tips for details) printing repeated error messages. Restarting macOS appears to fix this.

Tips

The following tips can be helpful when working with extensions in Xamarin.Mac:

  • As Xamarin.Mac currently does not support debugging extensions, the debugging experience will primarily depend on execution and printf like statements. However, extensions run in a sandbox process, thus Console.WriteLine will not act as it does in other Xamarin.Mac applications. Invoking NSLog directly will output debugging messages to the System Log.
  • Any uncaught exceptions will crash the extension process, providing only a small amount of useful information in the System Log. Wrapping troublesome code in a try/catch (Exception) block that NSLog’s before re-throwing may be useful.
  • The System Log can be accessed from the Console app under Applications > Utilities:
  • As noted above, running the extension host application will register it with the system. Deleting the application bundle with unregister it.
  • If “stray” versions of an app's extensions are registered, use the following command to locate them (so they can be deleted): plugin kit -mv

Walkthrough and Sample App

Since the developer will create and work with Xamarin.Mac extensions in the same way as Xamarin.iOS extensions, please refer to our Introduction to Extensions documentation for more details.

An example Xamarin.Mac project containing small, working samples of each extension type can be found here.

Summary

This article has taken a quick look at working with extensions in a Xamarin.Max version 2.10 (and greater) app.

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.