NAME
mcs - Mono Compiler Suite.
SYNOPSIS
mcs [option] [source-files]
DESCRIPTION
mcs is the Mono C# compiler, an implementation
of the ECMA-334 language specification. You can pass one or more
options to drive the compiler, and a set of source files. Extra
options or arguments can be provided in a response file. Response
files are referenced by prepending the @ symbol to the response
file name.
The Mono C# compiler accepts the same options than the Microsoft
C# compiler does. Those options can start with a slash or a dash
(/checked is the same as -checked). Additionally to this, the
GNU-like options are supported, those begin with "--". All
MCS-specific flags which are not available in the Microsoft C#
compiler are available only with the GNU-style options.
C# source files must end with a ".cs" extension. Compilation of
C# source code requires all the files that make up a library,
module or executable to be provided on the command line. There is
no support for partial compilation. To achieve the benefits of
partial compilation, you should compile programs into their own
assemblies, and later reference them with the "-r" flag.
The Mono C# compiler generates images (.exe files) that contain
CIL byte code that can be executed by any system that implements a
Common Language Infrastructure virtual machine such as the
Microsoft .NET runtime engine on Windows or the Mono runtime engine
on Unix systems. Executables are not bound to a specific CPU or
operating system.
OPTIONS
- --about
- Displays information about the Mono C# compiler
- --addmodule:MODULE1[,MODULE2]
- Includes the specified modules in the resulting assembly.
- -checked, -checked+
- Sets the default compilation mode to `checked'. This makes all
the math operations checked (the default is unchecked).
- -checked-
- Sets the default compilation mode to `unchecked'. This makes
all the math operations unchecked (this is the default).
- -codepage:ID
- Specifies the code page used to process the input files from
the point it is specified on. By default files will be processed in
the Latin-1 code page. The compiler will also automatically detect
Unicode files that have an embedded byte mark at the beginning. The
special ID "utf8" can be used to switch to utf8 and the ID "reset"
restores the automatic handling of code pages.
- -define:SYMLIST, -d:SYMLIST
- Defines the symbol listed by the semi-colon separeted list
SYMLIST SYMBOL. This can be tested in the source code by the
pre-processor, or can be used by methods that have been tagged with
the Conditional attribute.
- -debug, -debug+, -g
- 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 resource.
- -debug-
- Do not generate debugging information.
- -delaysign+
- Only embed the strongname public key into the assembly. The
actual signing must be done in a later stage using the SN tool.
This is useful to protect the private key during development. Note
that delay signing can only be done using a strongname key file
(not a key container). The option is equivalent to including
[assembly: AssemblyDelaySign (true)] in your source code. Compiler
option takes precedence over the attributes.
- -delaysign-
- Default. Strongname (sign) the assembly using the strong name
key file (or container). The option is equivalent to including
[assembly: AssemblyDelaySign (false)] in your source code. Compiler
option takes precedence over the attributes.
- --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.
- --fatal
- This is used for debugging the compiler. This makes the error
emission generate an exception that can be caught by a debugger.
- -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 by default (or when using delaysign-). A file
containing only the public key can be used with delaysign+. The
option is equivalent to including [assembly: AssemblyKeyFile
("KEYFILE")] in your source code. Compiler option takes precedence
over the attributes.
- -keycontainer:CONTAINER
- Strongname (sign) the output assembly using the key pair
present in the specified container. Note that delaysign+ is ignored
when using key containers. The option is equivalent to including
[assembly: AssemblyKeyName ("CONTAINER")] in your source code.
Compiler option takes precedence over the attributes.
- -lib:PATHLIST
- Each path specified in the comma-separated list will direct the
compiler to look for libraries in that specified path.
- -L PATH
- Directs the compiler to look for libraries in the specified
path. Multiple paths can be provided by using the option multiple
times.
- -main:CLASS
- Tells the compiler which CLASS contains the entry point. Useful
when you are compiling several classes with a Main method.
- -nostdlib, -nostdlib+
- Use this flag if you want to compile the core library. This
makes the compiler load its internal types from the assembly being
compiled.
- -noconfig, -noconfig+
- Disables the default compiler configuration to be loaded. The
compiler by default has references to the system assemblies.
- -nowarn:WARNLIST
- Makes the compiler ignore warnings specified in the
comma-separeted list WARNLIST>
- -out:FNAME, -o FNAME
- Names the output file to be generated.
- --parse
- Used for benchmarking. The compiler will only parse its input
files.
- -pkg:package1[,packageN]
- The compiler will invoke pkg-config --libs on the set of
packages specified on the command line to obtain libraries and
directories to compile the code.
This is typically used with third party components, like this:
$ mcs -pkg:gtk-sharp demo.cs
- -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 name will be the file name.
- -linkresource:RESOURCE[,ID]
- Links to the specified RESOURCE. The optional ID can be used to
give a name to the linked resource.
- -r:ASSEMBLY1[,ASSEMBLY2], -r ASSEMBLY1[,ASSEMBLY2]
- Reference the named assemblies. Use this to use classes from
the named assembly in your program. The assembly will be loaded
from either the system directory where all the assemblies live, or
from the path explicitly given with the -L option.
You can also use a semicolon to separate the assemblies instead
of a comma.
- -recurse:PATTERN, --recurse PATTERN
- Does recursive compilation using the specified pattern. In Unix
the shell will perform globbing, so you migth want to use it like
this:
$ mcs -recurse:'*.cs'
- --stacktrace
- Generates a stack trace at the time the error is reported,
useful for debugging the compiler.
- -target:KIND, -t:KIND
- Used to specify the desired target. The possible values are:
exe (plain executable), winexe (Windows.Forms executable), library
(component libraries) and module (partial library).
- --timestamp
- Another debugging flag. Used to display the times at various
points in the compilation process.
- -unsafe, -unsafe+
- Enables compilation of unsafe code.
- -v
- Debugging. Turns on verbose yacc parsing.
- -v2
- Turns on C# 2.0 language features.
- --version
- Shows the compiler version.
- -warnaserror, -warnaserror+
- Treat warnings as errors.
- -warn:LEVEL
- Sets the warning level. 0 is the lowest warning level, and 4 is
the highest. The default is 2.
- -win32res:FILE
- Specifies a Win32 resource file (.res) to be bundled into the
resulting assembly.
- -win32icon:FILE
- Attaches the icon specified in FILE on the output into the
resulting assembly.
- --
- Use this to stop option parsing, and allow option-looking
parameters to be passed on the command line.
SPECIAL DEFINES
The TRACE and DEBUG defines
have a special meaning to the compiler.
By default calls to methods and properties in the
System.Diagnostics.Trace class are not generated unless the TRACE
symbol is defined (either through a "#define TRACE") in your source
code, or by using the --define TRACE in the command line.
By default calls to methods and properties in the
System.Diagnostics.Debug class are not generated unless the DEBUG
symbol is defined (either through a "#define DEBUG") in your source
code, or by using the --define DEBUG in the command line.
Note that the effect of defining TRACE and DEBUG is a global
setting, even if they are only defined in a single file.
DEBUGGING SUPPORT
When use the "--debug" or "-g" flag, MCS
will create an assembler file FILE-debug.s containing debugging
information where FILE is the name of the generated assembly. You
need to run this file through the assembler to get a object file
FILE-debug.o. See mono's "--dwarf-plus" argument for details on how
to use this file.
NOTES
During compilation the MCS compiler defines the
__MonoCS__ symbol, this can be used by pre-processor instructions
to compile Mono C# compiler specific code. Please note that this
symbol is only to test for the compiler, and is not useful to
distinguish compilation or deployment platforms.
AUTHORS
The Mono C# Compiler was written by Miguel de
Icaza, Ravi Pratap and Martin Baulig at Ximian.
LICENSE
The Mono Compiler Suite is released under the terms
of the GNU GPL. Please read the accompanying `COPYING' file for
details. Alternative licenses are available from Ximian.
SEE ALSO
mono(1),
mint(1),
sn(1)
BUGS
To report bugs in the compiler, you can use
`bug-buddy', or you can file bug reports in our bug tracking
system: http://bugzilla.ximian.com.
MAILING LIST
The Mono Mailing List is available at:
mono-list-request@ximian.com
MORE INFORMATION
The Mono C# compiler is developed by
Ximian, Inc (http://www.ximian.com) and is based on
the ECMA C# language standard available here: http://www.ecma.ch/ecma1/STAND/ecma-334.htm