Cross-Platform .NET Development: Using Mono, Portable.NET, and Microsoft .NET