MonoTouch is a software development kit for Mac OS X that lets you use .NET programming languages to create native applications for Apple iPhone and Apple iPod Touch devices. MonoTouch allows developers to use the .NET framework and more efficient programming languages, such as C#, to create applications that run on the iPhone and can take advantage of native iPhone APIs. Developers can test MonoTouch applications on the iPhone simulator, as well as physical hardware, and can distribute MonoTouch applications on Apple's App Store.
MonoTouch is delivered as a static compiler that turns .NET executables and libraries into native applications. There is no JIT or interpreter shipped with your application, only native code. In addition to the core Base Class Libraries that are part of Mono, MonoTouch also ships with bindings for various iPhone APIs to allow developers to create native iPhone applications with Mono.
MonoTouch requires a Mac and Apple's iPhone SDK to test on the emulator and deploy on the device. And you will need to be an Apple iPhone developer to deploy on the device.
MonoTouch is a commercial product based on the open source Mono project and is licensed on a per-developer basis.
MonoTouch is based on a hybrid .NET 2.0 and Silverlight 2 API profile. If you want to use existing C# code, you will need to compile it from scratch using our compiler and tools to make sure that the proper assemblies are referenced.
MonoTouch supports garbage collection, multi-threading, and many features of .NET 3.5, including C# 3.0 and LINQ, with some exceptions due to the security system in the device. See Limitations for more information about the limitations of MonoTouch.
The following .NET assemblies are part of MonoTouch 1.0:
In addition, the following Mono assemblies are part of MonoTouch 1.0:
And the following third party assemblies are part of MonoTouch 1.0:
You can not reuse the 1.0 or 2.0 desktop/server assemblies from Mono or .NET with MonoTouch.
To reuse existing .NET code with MonoTouch, you must recompile your libraries with MonoTouch's compiler and base assemblies.
In particular, replacing the assemblies from MonoTouch with assemblies from the desktop Mono edition will not work since many APIs are missing from the MonoTouch lightweight Mono profile.
APIs in .NET are bound to the core mscorlib library. On the desktop and server 1.0, 1.1 and 2.0 exists (version numbers: 1.0.3300.0, 1.0.5000.0 and 2.0.0.0 respectively), from the API exposed in mscorlib the rest of the assemblies flow.
In MonoTouch instead of using the server/desktop assemblies we picked the Silverlight foundation since this foundation is lighter: it has fewer dependencies, brings less code to the device and drop a number of features that do not apply to the iPhone (configuring the runtime through System.Configuration for example and .config files that end-users can edit).
No. MonoTouch does not currently include Moonlight or Silverlight functionality.
No. MonoTouch does not currently include Windows.Forms functionality and is not planned.
A MonoTouch Professional Edition (previously known as Personal Edition) license is non-transferable, entitles the owner to one year of MonoTouch updates, and allows distribution of applications built with MonoTouch on Apple's App Store.
A MonoTouch Enterprise Edition license is owned by a legal entity for use by one developer at any given time, entitles the owner to one year of MonoTouch updates, and allows enterprise deployments of MonoTouch applications, as well as the distribution of applications built with MonoTouch on Apple's App Store.
MonoDevelop will prompt users on startup when new versions of Mono, MonoDevelop, or MonoTouch are available for download. Alternatively, you can manually force MonoDevelop to check for updates by going to the "Help" menu in MonoDevelop and selecting "Check for Updates". Very old versions of MonoDevelop may not contain the "Check for Update" option. If you do not see this option, install the latest release of MonoDevelop for OS X.
MonoDevelop will only provide download links for the full version of MonoTouch if the machine already has the full version of MonoTouch installed. If you have not yet installed the full version of MonoTouch, the download link in the instructions you were provided at the end of the MonoTouch purchase process always point to the latest version of MonoTouch.