Mac OS X Development with Mono
Oxygene provides a variety of tools and technologies to help developers build applications for the Mac OS X platform that go beyond the basic class library support that is provided by Mono itself.
Tools and Technologies
- Creating Monobjc Applications for the Mac
- Implementing Key-Value Coding and Cocoa Bindings
Creating Cocoa# Applications for the Macdeprecated
Cross Platform Development Concerns
In general, cleanly written .NET/Mono executables can be compiled with Oxygene on any operating system and against either the .NET or Mono frameworks, and will run fine on all supported platforms. Mono does a good job of abstracting away the platform differences in the common APIs provided by the framework.
However, some care has to be taken to not introduce platform specific dependencies. This includes:
- Hardcoded assumptions about the path separator ("/" on Linux and Mac OS X vs. "\" on Windows). Try to use the functions provided by System.IO.Path to work with paths, rather than using "/" and "\" literals
- Native imports (P/Invoke) and DllImportAttribute attributes linking in Windows-Only (or Unix-only) APIs
- Use of the Microsoft.Win32.Registry namespace
- Use of Windows only APIs, like WPF
- Use of standard shell folders such as %APPDATA% (which Mono simulates in ~/.config) vs. use of appropriate system folders on Mac OS X and Linux.