There are currently four predominant implementations of the CLI, each with an accompanying implementation of a C# compiler. Table 18.1 describes these implementations.
Table 18.1. Primary C# Compilers
Microsoft Visual C# .NET Compiler
Microsoft's .NET C# compiler is dominant in the industry, but it is limited to running on the Windows family of operating systems. You can download it free as part of the Microsoft .NET Framework SDK from http://msdn.microsoft.com/netframework/downloads/updates/default.aspx.
The Mono Project is an open source implementation sponsored by Ximian and designed to provide a Windows-, Linux-, and UNIX-compatible version of the CLI specification and C# compiler. Source code and binaries are available at www.go-mono.com.
This is focused on creating platform-portable applications that will run under both the .NET and the DotGNU.Portable.NET implementations of the CLI. This implementation is available from www.dotgnu.org. Supported operating systems include GNU/Linux *BSD, Cygwin/Mingw32, Mac OS X, Solaris, AIX, and PARISC. DotGNU and Mono have used portions of each other's libraries at various times.
The Rotor program, also known as the Shared Source CLI, is an implementation of the CLI that Microsoft developed to run on Windows, Mac OS X, and FreeBSD. Both the implementation and the source code are available free at http://msdn.microsoft.com/net/sscli. Note that although the source code is available for download, Microsoft has not licensed Rotor for developing commercial applications and instead has targeted it as a learning tool.
Although none of these platforms and compilers would have any problems with the source code shown in Chapter 1, note that each CLI and C# compiler implementation is at a different stage of compliance with the specifications. For example, some implementations will not compile all the C# 2.0 syntax. All implementations, however, are intended to comply with the ECMA-334 specification for C# 1.0  and the ECMA-335 specification for the CLI 1.2.  Furthermore, many implementations include prototype features prior to the establishment of those features in standards.
 This is available for free via mail, or via download at www.ecma-international.org/publications/standards/Ecma-334.htm.
 This is available for free via mail, or via download at www.ecma-international.org/publications/standards/Ecma-335.htm.