The
.I mcs
compiler is used to compile against the 1.x profile and implements
-C# 1.0 and 2.0 with the exception of generics and nullable types.
+C# 1.0 and parts of C# 2.0 and C# 3.0 specification which do not depend
+on generics.
.PP
The
.I gmcs
compiler is used to compile against the 2.0 profile and implements
-the complete C# 2.0 specification including generics.
+the complete C# 3.0 specification.
.PP
The
.I smcs
applications that will run on a web browser. The API exposed by this
profile is a small subset of the 3.5 API (even if it is commonly
referred as the 2.1 API, this API is a small subset of 2.0 with a few
-extensions), in addition this profile by default runs with
--langversion:linq which turns on the C# 3.0 language by default.
+extensions).
.PP
See the section on packages for more information.
.PP
or can be used by methods that have been tagged with the Conditional
attribute.
.TP
-.I \-debug, \-debug+, \-g
+.I \-debug, \-debug+
Generate debugging information. To obtain stack traces with debugging
information, you need to invoke the mono runtime with the `--debug'
flag. This debugging information is stored inside the assembly as a
Extracts the C#/XML documentation from the source code and stores in in
the given FILE.
.TP
-.I \-\-expect-error X L
-The compiler will expect the code to generate an error
-named `X' in line `L'. This is only used by the test suite.
-.TP
+.I \-errorreport
+This flag is ignored by Mono's C# compiler and is present only to
+allow MCS to be used as a CSC replacement for msbuild/xbuild.
+.TP
.I \-\-fatal
This is used for debugging the compiler. This makes the error emission
generate an exception that can be caught by a debugger.
.TP
+.I \-filealign
+This flag is ignored by Mono's C# compiler and is present only to
+allow MCS to be used as a CSC replacement for msbuild/xbuild.
+.TP
+.I \-fullpaths
+Any source code error or warning issued by the compiler includes file
+name only by default. This option causes compiler to issue absolute file
+path instead.
+.TP
.I \-keyfile:KEYFILE
Strongname (sign) the output assembly using the key pair present in
the specified strong name key file (snk). A full key pair is required
.TP
.I "Default"
Instruct compiler to use the latest version. Equivalent is to omit the
-switch (this currently defaults to the C# 2.0 language specification).
+switch (this currently defaults to the C# 3.0 language specification).
.TP
.I "ISO-1"
Restrict compiler to use only first ISO standardized features.
This allows the use of generics, static classes, iterators and
anonymous methods for example.
.TP
-.I "linq"
-This enables the C# 3.0 support. Only a few features of C# 3.0 have
-been implemented in the Mono C# compiler, so not everything is
-available.
+.I "3"
+Restrict the compiler to use only the features available in C# 3.0
+(a superset of ISO-1 and ISO-2).
+.TP
+.I "future"
+Enables features from upcoming versions of the language. As of
+May 2009 this includes support for C# 4 as released in Visual Studio 2010 beta 1.
.PP
Notice that this flag only controls the language features available to
the programmer, it does not control the kind of assemblies produced.
.ne
.RE
.TP
+.I \-platform:ARCH
+Used to specify the target platform. The possible values are: anycpu,
+x86, x64 or itanium. As of June 2009, the Mono runtime only have support
+to emit anycpu and x86 assemblies.
+.TP
.I -resource:RESOURCE[,ID]
Embeds to the given resource file. The optional ID can be used to
give a different name to the resource. If not specified, the resource
$ mcs -recurse:'*.cs'
.fi
.TP
+.I \-sdk:VERSION
+Used to specify the version of Base Class Library assemblies. The possible
+values are: 2 (default), 4. The version number means which .NET version
+should the produced assembly be compatible with.
+.TP
.I \-\-shell
Starts up the compiler in interactive mode, providing a C# shell for
statements and expressions. A shortcut is to use the
.I \-v
Debugging. Turns on verbose yacc parsing.
.TP
-.I \-v2
-Turns on C# 2.0 language features.
-.TP
.I \-\-version
Shows the compiler version.
.TP
.I \-warnaserror, \-warnaserror+
-Treat warnings as errors.
+All compilers warnings will be reported as errors.
+.TP
+.I \-warnaserror:W1,[Wn], -warnaserror+:W1,[Wn]
+Treats one or more compiler warnings as errors.
+.TP
+.I \-warnaserror-:W1,[Wn]
+Sets one or more compiler warnings to be always threated as warnings.
+Becomes useful when used together with -warnaserror.
.TP
.I \-warn:LEVEL
Sets the warning level. 0 is the lowest warning level, and 4 is the
-highest. The default is 2.
+highest. The default is 4.
.TP
.I \-win32res:FILE
Specifies a Win32 resource file (.res) to be bundled into the
Use this to stop option parsing, and allow option-looking parameters
to be passed on the command line.
.PP
-.SH PACKAGES
+.SH PACKAGES AND LIBRARIES
+When referencing an assembly, if the name of the assembly is a path,
+the compiler will try to load the assembly specified in the path. If
+it does not, then the compiler will try loading the assembly from the
+current directory, the compiler base directory and if the assembly is
+not found in any of those places in the directories specified as
+arguments to the -lib: command argument.
+.PP
Depending on the invocation for the C# compiler (mcs, gmcs, or smcs)
you will get a default set of libraries and versions of those
libraries that are referenced.