Objective-C Platforms

.NET Embedding can target various platforms when generating Objective-C code:

  • macOS
  • iOS
  • tvOS
  • watchOS [not implemented yet]

The platform is selected by passing the --platform=<platform> command-line argument to .NET Embedding.

When building for the iOS, tvOS and watchOS platforms, .NET Embedding will always create a framework that embeds Xamarin.iOS, since Xamarin.iOS contains a lot of runtime support code which is required on these platforms.

However, when building for the macOS platform, it's possible to choose whether the generated framework should embed Xamarin.Mac or not. It's possible to not embed Xamarin.Mac if the bound assembly does not reference Xamarin.Mac.dll (either directly or indirectly), and this is selected by passing --platform=macOS to the .NET Embedding tool.

If the bound assembly contains a reference to Xamarin.Mac.dll, it's necessary to embed Xamarin.Mac, and additionally the embeddinator must know which target framework to use.

There are three possible Xamarin.Mac target frameworks: modern (previously called mobile), full and system (the difference between each is described in Xamarin.Mac's target framework documentation), and each is selected by passing --platform=macOS-modern, --platform=macOS-full or --platform=macOS-system to the .NET Embedding tool.