2008-06-29 01:13:44 +04:00
|
|
|
.de Sp \" Vertical space (when we can't use .PP)
|
|
|
|
.if t .sp .5v
|
|
|
|
.if n .sp
|
|
|
|
..
|
2002-02-12 01:18:46 +03:00
|
|
|
.TH mcs 1 "6 January 2001"
|
|
|
|
.SH NAME
|
2017-09-07 23:40:43 +03:00
|
|
|
mcs \- Turbo C# Compiler
|
2002-02-12 01:18:46 +03:00
|
|
|
.SH SYNOPSIS
|
|
|
|
.B mcs
|
|
|
|
[option] [source-files]
|
|
|
|
.SH DESCRIPTION
|
2017-09-07 23:40:43 +03:00
|
|
|
mcs is the Turbo C# compiler (also known as the Mono C# compiler), it
|
|
|
|
is 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.
|
2002-02-12 01:18:46 +03:00
|
|
|
.PP
|
2005-10-08 01:25:44 +04:00
|
|
|
The
|
|
|
|
.I mcs
|
2011-02-08 20:16:18 +03:00
|
|
|
compiler is used to compile against the latest Mono Base Class Library
|
2016-09-15 18:11:53 +03:00
|
|
|
version and fully implements C# 1.0, 2.0, 3.0, 4.0, 5.0 and 6.0
|
2017-09-07 23:40:43 +03:00
|
|
|
specifications with partial support for C# 7.0.
|
2007-07-11 20:06:48 +04:00
|
|
|
.PP
|
2008-05-08 22:14:13 +04:00
|
|
|
See the section on packages for more information.
|
|
|
|
.PP
|
2017-09-07 23:40:43 +03:00
|
|
|
The Turbo C# compiler accepts the same command line options that the
|
2007-01-01 07:26:28 +03:00
|
|
|
Microsoft C# compiler does. Those options can start with a slash or a
|
|
|
|
dash (/checked is the same as -checked). Additionally some 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.
|
2002-08-03 01:21:10 +04:00
|
|
|
.PP
|
2002-02-12 01:18:46 +03:00
|
|
|
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.
|
|
|
|
.PP
|
2017-09-07 23:40:43 +03:00
|
|
|
The Turbo C# compiler generates images (.exe files) that contain CIL
|
2002-02-12 01:18:46 +03:00
|
|
|
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.
|
|
|
|
.PP
|
2017-09-07 23:40:43 +03:00
|
|
|
The Turbo C# compiler by default only references three assemblies:
|
2005-09-29 21:45:05 +04:00
|
|
|
mscorlib.dll, System.dll and System.Xml.dll. If you want to
|
|
|
|
reference extra libraries you must manually specify them using the
|
|
|
|
-pkg: command line option or the -r: command line option.
|
|
|
|
Alternatively if you want to get all of the System libraries, you can
|
|
|
|
use the -pkg:dotnet command line option.
|
|
|
|
.PP
|
2002-02-12 01:18:46 +03:00
|
|
|
.SH OPTIONS
|
|
|
|
.TP
|
|
|
|
.I \-\-about
|
2017-09-07 23:40:43 +03:00
|
|
|
Displays information about the Turbo C# compiler
|
2002-02-12 01:18:46 +03:00
|
|
|
.TP
|
2003-12-21 22:22:46 +03:00
|
|
|
.I \-\-addmodule:MODULE1[,MODULE2]
|
2008-06-29 01:13:44 +04:00
|
|
|
Includes the specified modules in the resulting assembly. Modules are
|
|
|
|
created by calling the compiler with the -target:module option
|
2003-12-21 22:22:46 +03:00
|
|
|
.TP
|
2002-08-03 01:21:10 +04:00
|
|
|
.I -checked, -checked+
|
2002-02-12 01:18:46 +03:00
|
|
|
Sets the default compilation mode to `checked'. This makes all
|
|
|
|
the math operations checked (the default is unchecked).
|
|
|
|
.TP
|
2002-08-03 01:21:10 +04:00
|
|
|
.I -checked-
|
|
|
|
Sets the default compilation mode to `unchecked'. This makes all
|
|
|
|
the math operations unchecked (this is the default).
|
|
|
|
.TP
|
2008-06-29 01:13:44 +04:00
|
|
|
.I -clscheck-, -clscheck+
|
|
|
|
Disables or enables the Common Language Specification (CLS) checks (it
|
|
|
|
is enabled by default).
|
|
|
|
.Sp
|
|
|
|
The Common Language Specification (CLS) defines an interoperable
|
|
|
|
subset of types as well as conventions that compilers (CLS producers)
|
|
|
|
and developers must follow to expose code to other programming
|
|
|
|
languages (CLS consumers).
|
|
|
|
.TP
|
2002-09-07 04:17:40 +04:00
|
|
|
.I -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
|
2007-07-05 09:36:19 +04:00
|
|
|
environment-dependent native code page. The compiler will also automatically
|
|
|
|
detect Unicode files that have an embedded byte mark at the beginning.
|
2007-04-22 21:07:34 +04:00
|
|
|
.Sp
|
2005-09-27 20:43:19 +04:00
|
|
|
Other popular encodings are 28591 (Latin1), 1252 (iso-8859-1) and 65001 (UTF-8).
|
2007-04-22 21:07:34 +04:00
|
|
|
.Sp
|
2005-09-27 20:43:19 +04:00
|
|
|
MCS supports a couple of shorthands: "utf8" can be used to specify utf-8 instead
|
|
|
|
of using the cryptic 65001 and "reset" restores the automatic handling of
|
|
|
|
code pages. These shorthands are not available on the Microsoft compiler.
|
2005-09-27 20:25:43 +04:00
|
|
|
.TP
|
2002-08-03 01:21:10 +04:00
|
|
|
.I \-define:SYMLIST, -d:SYMLIST
|
2007-01-01 07:26:28 +03:00
|
|
|
Defines the symbol listed by the semi-colon separated list SYMLIST
|
2002-08-03 01:21:10 +04:00
|
|
|
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.
|
2002-03-24 22:12:57 +03:00
|
|
|
.TP
|
2008-10-10 15:23:35 +04:00
|
|
|
.I \-debug, \-debug+
|
2012-02-06 16:26:21 +04:00
|
|
|
Generate debugging information. To obtain stack traces with debugging
|
2003-04-03 07:22:31 +04:00
|
|
|
information, you need to invoke the mono runtime with the `--debug'
|
2012-02-06 16:26:21 +04:00
|
|
|
flag. The debugging information is stored in a MDB file located in
|
|
|
|
same output folder as produced assembly.
|
2002-02-12 01:18:46 +03:00
|
|
|
.TP
|
2002-08-03 01:21:10 +04:00
|
|
|
.I \-debug-
|
|
|
|
Do not generate debugging information.
|
|
|
|
.TP
|
2004-03-25 15:46:03 +03:00
|
|
|
.I \-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.
|
|
|
|
.TP
|
|
|
|
.I \-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.
|
|
|
|
.TP
|
2005-05-05 19:11:25 +04:00
|
|
|
.I \-doc:FILE
|
|
|
|
Extracts the C#/XML documentation from the source code and stores in in
|
|
|
|
the given FILE.
|
|
|
|
.TP
|
2009-04-28 21:28:42 +04:00
|
|
|
.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
|
2002-02-12 01:18:46 +03:00
|
|
|
.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
|
2009-04-28 21:28:42 +04:00
|
|
|
.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
|
2011-01-22 16:26:48 +03:00
|
|
|
.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
|
2004-03-25 15:46:03 +03:00
|
|
|
.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
|
|
|
|
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.
|
|
|
|
.TP
|
|
|
|
.I \-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.
|
|
|
|
.TP
|
2004-09-09 12:55:20 +04:00
|
|
|
.I \-langversion:TEXT
|
|
|
|
The option specifies the version of the language to use. The feature
|
|
|
|
set is different in each C# version. This switch can be used to force
|
|
|
|
the compiler to allow only a subset of the features.
|
|
|
|
The possible values are:
|
2007-04-25 05:36:43 +04:00
|
|
|
.RS
|
|
|
|
.ne 8
|
|
|
|
.TP
|
|
|
|
.I "Default"
|
|
|
|
Instruct compiler to use the latest version. Equivalent is to omit the
|
2016-09-15 18:11:53 +03:00
|
|
|
switch (this currently defaults to the C# 6.0 language specification).
|
2007-04-25 05:36:43 +04:00
|
|
|
.TP
|
|
|
|
.I "ISO-1"
|
2007-10-09 00:57:18 +04:00
|
|
|
Restrict compiler to use only first ISO standardized features.
|
2004-09-09 12:55:20 +04:00
|
|
|
The usage of features such as generics, static classes, anonymous
|
|
|
|
methods will lead to error.
|
2007-04-25 05:36:43 +04:00
|
|
|
.TP
|
2007-10-09 00:57:18 +04:00
|
|
|
.I "ISO-2"
|
|
|
|
Restrict compiler to use only the second ISO standardized features.
|
|
|
|
This allows the use of generics, static classes, iterators and
|
|
|
|
anonymous methods for example.
|
2009-05-27 20:37:26 +04:00
|
|
|
.TP
|
|
|
|
.I "3"
|
|
|
|
Restrict the compiler to use only the features available in C# 3.0
|
|
|
|
(a superset of ISO-1 and ISO-2).
|
|
|
|
.TP
|
2011-09-16 13:20:20 +04:00
|
|
|
.I "4"
|
|
|
|
Restrict the compiler to use only the features available in C# 4.0
|
|
|
|
specification.
|
|
|
|
.TP
|
2016-09-15 18:11:53 +03:00
|
|
|
.I "5"
|
|
|
|
Restrict the compiler to use only the features available in C# 5.0
|
|
|
|
specification.
|
|
|
|
.TP
|
|
|
|
.I "6"
|
|
|
|
Restrict the compiler to use only the features available in C# 6.0
|
|
|
|
specification.
|
|
|
|
.TP
|
2015-08-30 22:18:13 +03:00
|
|
|
.I "experimental"
|
2011-02-08 20:16:18 +03:00
|
|
|
Enables unstable features from upcoming versions of the language.
|
2007-04-25 05:36:43 +04:00
|
|
|
.PP
|
2011-02-08 20:16:18 +03:00
|
|
|
Notice that this flag only restricts the language features available to
|
2015-08-30 22:18:13 +03:00
|
|
|
the programmer. A version of produced assemblies can be controlled using
|
2011-02-08 20:16:18 +03:00
|
|
|
.I SDK
|
|
|
|
option.
|
2007-04-25 05:36:43 +04:00
|
|
|
.ne
|
|
|
|
.RE
|
2004-09-09 12:55:20 +04:00
|
|
|
.TP
|
2002-08-03 01:21:10 +04:00
|
|
|
.I -lib:PATHLIST
|
|
|
|
Each path specified in the comma-separated list will direct the
|
|
|
|
compiler to look for libraries in that specified path.
|
|
|
|
.TP
|
2002-02-12 01:18:46 +03:00
|
|
|
.I \-L PATH
|
|
|
|
Directs the compiler to look for libraries in the specified path.
|
2002-08-03 01:21:10 +04:00
|
|
|
Multiple paths can be provided by using the option multiple times.
|
2002-02-12 01:18:46 +03:00
|
|
|
.TP
|
2004-04-22 21:08:18 +04:00
|
|
|
.I \-main:CLASS
|
|
|
|
Tells the compiler which CLASS contains the entry point. Useful when
|
|
|
|
you are compiling several classes with a Main method.
|
|
|
|
.TP
|
2002-08-03 01:21:10 +04:00
|
|
|
.I \-nostdlib, -nostdlib+
|
2002-02-12 01:18:46 +03:00
|
|
|
Use this flag if you want to compile the core library. This makes the
|
|
|
|
compiler load its internal types from the assembly being compiled.
|
|
|
|
.TP
|
2002-08-03 01:21:10 +04:00
|
|
|
.I \-noconfig, \-noconfig+
|
2002-03-20 00:03:15 +03:00
|
|
|
Disables the default compiler configuration to be loaded. The
|
|
|
|
compiler by default has references to the system assemblies.
|
|
|
|
.TP
|
2002-08-03 01:21:10 +04:00
|
|
|
.I \-nowarn:WARNLIST
|
2007-01-01 07:26:28 +03:00
|
|
|
Makes the compiler ignore warnings specified in the comma-separated
|
2002-08-03 01:21:10 +04:00
|
|
|
list WARNLIST>
|
2002-02-12 01:18:46 +03:00
|
|
|
.TP
|
2005-02-18 21:06:02 +03:00
|
|
|
.I -optimize, -optimize+, -optimize-
|
2012-02-06 16:26:21 +04:00
|
|
|
Controls compiler code generation optimizations on the code. Using -optimize or
|
2005-02-18 21:06:02 +03:00
|
|
|
-optimize+ will turn on optimizations, -optimize- will turn it off.
|
2012-02-06 16:26:21 +04:00
|
|
|
The default in mcs is to optimize-. The option can be mixed with -debug
|
|
|
|
but for the best debugging experience it is recommended leave the options off.
|
2005-02-18 21:06:02 +03:00
|
|
|
.TP
|
2002-08-03 01:21:10 +04:00
|
|
|
.I -out:FNAME, -o FNAME
|
2002-02-12 01:18:46 +03:00
|
|
|
Names the output file to be generated.
|
|
|
|
.TP
|
|
|
|
.I \-\-parse
|
|
|
|
Used for benchmarking. The compiler will only parse its input files.
|
|
|
|
.TP
|
2016-10-26 12:22:52 +03:00
|
|
|
.I \-pathmap:K=V[,Kn=Vn]
|
|
|
|
Sets a mapping for source path names used in generated output.
|
|
|
|
.TP
|
2004-05-14 00:24:49 +04:00
|
|
|
.I \-pkg:package1[,packageN]
|
2007-05-10 23:34:46 +04:00
|
|
|
Reference assemblies for the given packages.
|
|
|
|
.Sp
|
2004-05-14 00:24:49 +04:00
|
|
|
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.
|
2007-04-22 21:07:34 +04:00
|
|
|
.Sp
|
2004-05-14 00:24:49 +04:00
|
|
|
This is typically used with third party components, like this:
|
|
|
|
.nf
|
2007-07-11 21:35:43 +04:00
|
|
|
|
2004-05-14 00:24:49 +04:00
|
|
|
$ mcs -pkg:gtk-sharp demo.cs
|
|
|
|
.fi
|
2007-07-11 21:35:43 +04:00
|
|
|
.RS
|
|
|
|
.ne 8
|
2005-08-31 17:53:35 +04:00
|
|
|
.TP
|
|
|
|
.I \-pkg:dotnet
|
|
|
|
This will instruct the compiler to reference the System.* libraries
|
|
|
|
available on a typical dotnet framework installation, notice that this
|
2007-01-01 07:26:28 +03:00
|
|
|
does not include all of the Mono libraries, only the System.* ones. This
|
2005-08-31 17:53:35 +04:00
|
|
|
is a convenient shortcut for those porting code.
|
2007-07-11 21:35:43 +04:00
|
|
|
.ne
|
|
|
|
.RE
|
2007-05-10 23:34:46 +04:00
|
|
|
.TP
|
2009-06-12 16:42:17 +04:00
|
|
|
.I \-platform:ARCH
|
|
|
|
Used to specify the target platform. The possible values are: anycpu,
|
2012-03-01 19:06:32 +04:00
|
|
|
anycpu32bitpreferred, arm, x86, x64 or itanium. The default option is
|
|
|
|
anycpu.
|
2009-04-28 21:28:42 +04:00
|
|
|
.TP
|
2002-10-24 20:11:56 +04:00
|
|
|
.I -resource:RESOURCE[,ID]
|
2002-09-18 01:23:51 +04:00
|
|
|
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.
|
|
|
|
.TP
|
2002-10-24 20:11:56 +04:00
|
|
|
.I -linkresource:RESOURCE[,ID]
|
2002-09-18 01:23:51 +04:00
|
|
|
Links to the specified RESOURCE. The optional ID can be used to give
|
|
|
|
a name to the linked resource.
|
2002-02-12 01:18:46 +03:00
|
|
|
.TP
|
2008-06-29 01:13:44 +04:00
|
|
|
.I -r:ASSEMBLY1[,ASSEMBLY2], \-reference ASSEMBLY1[,ASSEMBLY2]
|
2004-01-09 17:07:45 +03:00
|
|
|
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.
|
2008-06-29 01:13:44 +04:00
|
|
|
.Sp
|
2004-01-09 17:07:45 +03:00
|
|
|
You can also use a semicolon to separate the assemblies instead of a
|
|
|
|
comma.
|
|
|
|
.TP
|
2008-06-29 01:13:44 +04:00
|
|
|
.I -reference:ALIAS=ASSEMBLY
|
|
|
|
Extern alias reference support for C#.
|
|
|
|
.Sp
|
|
|
|
If you have different assemblies that provide the same types, the
|
|
|
|
extern alias support allows you to provide names that your software
|
|
|
|
can use to tell those appart. The types from ASSEMBLY will be
|
|
|
|
exposed as ALIAS, then on the C# source code, you need to do:
|
|
|
|
.Sp
|
|
|
|
.nf
|
|
|
|
extern alias ALIAS;
|
|
|
|
.fi
|
|
|
|
To bring it into your namespace. For example, to cope with two
|
|
|
|
graphics libraries that define "Graphics.Point", one in
|
|
|
|
"OpenGL.dll" and one in "Postscript.dll", you would invoke the
|
|
|
|
compiler like this:
|
|
|
|
.Sp
|
|
|
|
.nf
|
|
|
|
mcs -r:Postscript=Postscript.dll -r:OpenGL=OpenGL.dll
|
|
|
|
.fi
|
|
|
|
.Sp
|
|
|
|
And in your source code, you would write:
|
|
|
|
.Sp
|
|
|
|
.nf
|
|
|
|
extern alias Postscript;
|
|
|
|
extern alias OpenGL;
|
|
|
|
|
|
|
|
class X {
|
|
|
|
// This is a Graphics.Point from Postscrip.dll
|
|
|
|
Postscript.Point p = new Postscript.Point ();
|
|
|
|
|
|
|
|
// This is a Graphics.Point from OpenGL.dll
|
|
|
|
OpenGL.Point p = new OpenGL.Point ();
|
|
|
|
}
|
|
|
|
.fi
|
|
|
|
.TP
|
2002-08-03 01:21:10 +04:00
|
|
|
.I \-recurse:PATTERN, --recurse PATTERN
|
2002-03-19 06:27:36 +03:00
|
|
|
Does recursive compilation using the specified pattern. In Unix the
|
2007-01-01 07:26:28 +03:00
|
|
|
shell will perform globbing, so you might want to use it like this:
|
2002-03-19 06:27:36 +03:00
|
|
|
.PP
|
|
|
|
.nf
|
2004-05-14 00:24:49 +04:00
|
|
|
$ mcs -recurse:'*.cs'
|
2002-03-19 06:27:36 +03:00
|
|
|
.fi
|
|
|
|
.TP
|
2011-01-17 20:20:40 +03:00
|
|
|
.I \-sdk:VERSION
|
2011-02-08 20:16:18 +03:00
|
|
|
Used to specify the version of Base Class Library assemblies used for
|
|
|
|
compilation. Following predefined values are valid: 2, 4 (default) as
|
|
|
|
well as any custom value. The predefined version number means which
|
|
|
|
.NET version should the produced assembly be compatible with. When
|
|
|
|
custom value is specified mcs will try to find Base Class Libraries
|
|
|
|
in the mono installed location PREFIX/lib/mono/<value>.
|
2011-01-17 20:20:40 +03:00
|
|
|
.TP
|
2008-09-04 10:18:18 +04:00
|
|
|
.I \-\-shell
|
|
|
|
Starts up the compiler in interactive mode, providing a C# shell for
|
|
|
|
statements and expressions. A shortcut is to use the
|
|
|
|
.I csharp
|
|
|
|
command directly.
|
|
|
|
.TP
|
2004-05-14 00:24:49 +04:00
|
|
|
.I \-\-stacktrace
|
|
|
|
Generates a stack trace at the time the error is reported, useful for
|
|
|
|
debugging the compiler.
|
|
|
|
.TP
|
2002-08-03 01:21:10 +04:00
|
|
|
.I \-target:KIND, \-t:KIND
|
2003-12-21 22:22:46 +03:00
|
|
|
Used to specify the desired target. The possible values are: exe
|
|
|
|
(plain executable), winexe (Windows.Forms executable), library
|
|
|
|
(component libraries) and module (partial library).
|
2002-02-12 01:18:46 +03:00
|
|
|
.TP
|
|
|
|
.I \-\-timestamp
|
|
|
|
Another debugging flag. Used to display the times at various points
|
|
|
|
in the compilation process.
|
|
|
|
.TP
|
2002-08-03 01:21:10 +04:00
|
|
|
.I \-unsafe, -unsafe+
|
2002-02-12 01:18:46 +03:00
|
|
|
Enables compilation of unsafe code.
|
|
|
|
.TP
|
|
|
|
.I \-v
|
|
|
|
Debugging. Turns on verbose yacc parsing.
|
2002-02-22 20:22:17 +03:00
|
|
|
.TP
|
2003-04-22 09:26:15 +04:00
|
|
|
.I \-\-version
|
|
|
|
Shows the compiler version.
|
|
|
|
.TP
|
2004-01-09 17:07:45 +03:00
|
|
|
.I \-warnaserror, \-warnaserror+
|
2009-03-03 18:45:38 +03:00
|
|
|
All compilers warnings will be reported as errors.
|
2004-01-09 17:07:45 +03:00
|
|
|
.TP
|
2009-03-03 18:45:38 +03:00
|
|
|
.I \-warnaserror:W1,[Wn], -warnaserror+:W1,[Wn]
|
2008-11-05 22:31:25 +03:00
|
|
|
Treats one or more compiler warnings as errors.
|
|
|
|
.TP
|
2009-03-03 18:45:38 +03:00
|
|
|
.I \-warnaserror-:W1,[Wn]
|
|
|
|
Sets one or more compiler warnings to be always threated as warnings.
|
|
|
|
Becomes useful when used together with -warnaserror.
|
|
|
|
.TP
|
2004-01-09 17:07:45 +03:00
|
|
|
.I \-warn:LEVEL
|
|
|
|
Sets the warning level. 0 is the lowest warning level, and 4 is the
|
2008-10-10 15:23:35 +04:00
|
|
|
highest. The default is 4.
|
2004-01-09 17:07:45 +03:00
|
|
|
.TP
|
|
|
|
.I \-win32res:FILE
|
|
|
|
Specifies a Win32 resource file (.res) to be bundled into the
|
|
|
|
resulting assembly.
|
|
|
|
.TP
|
|
|
|
.I \-win32icon:FILE
|
|
|
|
Attaches the icon specified in FILE on the output into the resulting
|
|
|
|
assembly.
|
|
|
|
.TP
|
2002-02-22 20:22:17 +03:00
|
|
|
.I \-\-
|
|
|
|
Use this to stop option parsing, and allow option-looking parameters
|
|
|
|
to be passed on the command line.
|
2002-02-12 01:18:46 +03:00
|
|
|
.PP
|
2009-03-10 20:20:50 +03:00
|
|
|
.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
|
2008-05-08 22:14:13 +04:00
|
|
|
The compiler uses the library path to locate libraries, and is able to
|
|
|
|
reference libraries from a particular package if that directory is
|
|
|
|
used. To simplify the use of packages, the C# compiler includes the
|
|
|
|
-pkg: command line option that is used to load specific collections of
|
|
|
|
libraries.
|
|
|
|
.PP
|
|
|
|
Libraries visible to the compiler are stored relative to the
|
|
|
|
installation prefix under PREFIX/lib/mono/ called the PACKAGEBASE and the
|
|
|
|
defaults for mcs, gmcs and smcs are as follows:
|
|
|
|
.TP
|
|
|
|
.I mcs
|
|
|
|
References the PACKAGEBASE/1.0 directory
|
|
|
|
.TP
|
|
|
|
.I gmcs
|
|
|
|
References the PACKAGEBASE/2.0 directory
|
|
|
|
.TP
|
|
|
|
.I smcs
|
|
|
|
References the PACKAGEBASE/2.1 directory
|
|
|
|
.PP
|
|
|
|
Those are the only runtime profiles that exist. Although other
|
|
|
|
directories exist (like 3.0 and 3.5) those are not really runtime
|
|
|
|
profiles, they are merely placeholders for extra libraries that build
|
|
|
|
on the 2.0 foundation.
|
|
|
|
.PP
|
|
|
|
Software providers will distribute software that is installed relative
|
|
|
|
to the PACKAGEBASE directory. This is integrated into the
|
|
|
|
.I gacutil
|
|
|
|
tool that not only installs public assemblies into the Global Assembly
|
|
|
|
Cache (GAC) but also installs them into the PACKAGEBASE/PKG directory
|
|
|
|
(where PKG is the name passed to the -package flag to gacutil).
|
|
|
|
.PP
|
|
|
|
As a developer, if you want to consume the Gtk# libraries, you would
|
|
|
|
invoke the compiler like this:
|
|
|
|
.nf
|
2008-05-08 22:16:48 +04:00
|
|
|
|
2008-05-08 22:14:13 +04:00
|
|
|
$ mcs -pkg:gtk-sharp-2.0 main.cs
|
2008-05-08 22:16:48 +04:00
|
|
|
|
2008-05-08 22:14:13 +04:00
|
|
|
.fi
|
|
|
|
The -pkg: option instructs the compiler to fetch the definitions for
|
|
|
|
gtk-sharp-2.0 from pkg-config, this is equivalent to passing to the C#
|
|
|
|
compiler the output of:
|
|
|
|
.nf
|
2008-05-08 22:16:48 +04:00
|
|
|
|
2008-05-08 22:14:13 +04:00
|
|
|
$ pkg-config --libs gtk-sharp-2.0
|
2008-05-08 22:16:48 +04:00
|
|
|
|
2008-05-08 22:14:13 +04:00
|
|
|
.fi
|
|
|
|
Usually this merely references the libraries from PACKAGEBASE/PKG.
|
|
|
|
.PP
|
|
|
|
Although there are directory names for 3.0 and 3.5, that does not mean
|
|
|
|
that there are 3.0 and 3.5 compiler editions or profiles. Those are
|
|
|
|
merely new libraries that must be manually referenced either with the
|
|
|
|
proper -pkg: invocation, or by referencing the libraries directly.
|
|
|
|
.PP
|
2002-05-27 19:21:24 +04:00
|
|
|
.SH SPECIAL DEFINES
|
|
|
|
The
|
|
|
|
.B TRACE
|
|
|
|
and
|
|
|
|
.B DEBUG
|
|
|
|
defines have a special meaning to the compiler.
|
|
|
|
.PP
|
|
|
|
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
|
|
|
|
.I "--define TRACE"
|
|
|
|
in the command line.
|
|
|
|
.PP
|
|
|
|
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
|
|
|
|
.I "--define DEBUG"
|
|
|
|
in the command line.
|
|
|
|
.PP
|
|
|
|
Note that the effect of defining TRACE and DEBUG is a global setting,
|
|
|
|
even if they are only defined in a single file.
|
|
|
|
.PP
|
2002-03-24 22:12:57 +03:00
|
|
|
.SH DEBUGGING SUPPORT
|
2007-07-11 21:35:43 +04:00
|
|
|
When using the "-debug" flag, MCS will generate a file with the
|
|
|
|
extension .mdb that contains the debugging information for the
|
|
|
|
generated assembly. This file is consumed by the Mono debugger (mdb).
|
2007-12-22 01:18:40 +03:00
|
|
|
.SH ENVIRONMENT VARIABLES
|
|
|
|
.TP
|
|
|
|
.I "MCS_COLORS"
|
|
|
|
If this variable is set, it contains a string in the form
|
|
|
|
"foreground,background" that specifies which color to use to display
|
|
|
|
errors on some terminals.
|
|
|
|
.Sp
|
|
|
|
The background is optional and defaults to your terminal current
|
|
|
|
background. The possible colors for foreground are:
|
|
|
|
.B black, red, brightred, green, brightgreen, yellow, brightyellow,
|
|
|
|
blue, brightblue, magenta, brightmagenta, cyan, brightcyan, grey,
|
|
|
|
white and brightwhite.
|
|
|
|
.Sp
|
|
|
|
The possible colors for background are: black, red, green, yellow,
|
|
|
|
blue, magenta, cyan, grey and white.
|
|
|
|
.Sp
|
|
|
|
For example, you could set these variable from your shell:
|
|
|
|
.nf
|
|
|
|
export MCS_COLORS
|
2007-12-22 01:40:19 +03:00
|
|
|
MCS_COLORS=errors=brightwhite,red
|
2007-12-22 01:18:40 +03:00
|
|
|
.fi
|
|
|
|
.Sp
|
|
|
|
You can disable the built-in color scheme by setting this variable to
|
|
|
|
"disable".
|
2002-02-21 05:34:18 +03:00
|
|
|
.SH NOTES
|
|
|
|
During compilation the MCS compiler defines the __MonoCS__ symbol,
|
|
|
|
this can be used by pre-processor instructions to compile Mono C#
|
2003-09-14 04:18:07 +04:00
|
|
|
compiler specific code. Please note that this symbol is only to test
|
|
|
|
for the compiler, and is not useful to distinguish compilation or
|
2007-07-11 21:35:43 +04:00
|
|
|
deployment platforms.
|
2002-02-12 01:18:46 +03:00
|
|
|
.SH AUTHORS
|
2007-01-01 07:26:28 +03:00
|
|
|
The Mono C# Compiler was written by Miguel de Icaza, Ravi Pratap,
|
|
|
|
Martin Baulig, Marek Safar and Raja Harinath. The development was
|
|
|
|
funded by Ximian, Novell and Marek Safar.
|
2002-02-12 01:18:46 +03:00
|
|
|
.PP
|
|
|
|
.SH LICENSE
|
2008-09-04 10:18:18 +04:00
|
|
|
The Mono Compiler Suite is released under the terms of the GNU GPL or
|
|
|
|
the MIT X11. Please read the accompanying `COPYING' file for details.
|
2012-03-13 00:15:46 +04:00
|
|
|
Alternative licensing for the compiler is available from Xamarin.
|
2002-02-12 01:18:46 +03:00
|
|
|
.PP
|
2002-03-25 01:42:33 +03:00
|
|
|
.SH SEE ALSO
|
2016-09-15 18:11:53 +03:00
|
|
|
csharp(1), mono(1), pkg-config(1), sn(1)
|
2002-03-25 01:42:33 +03:00
|
|
|
.PP
|
2002-02-12 01:18:46 +03:00
|
|
|
.SH BUGS
|
2007-01-01 07:26:28 +03:00
|
|
|
To report bugs in the compiler, you must file them on our bug tracking
|
|
|
|
system, at:
|
2014-12-16 17:05:05 +03:00
|
|
|
http://www.mono-project.com/community/bugs/
|
2002-02-12 01:18:46 +03:00
|
|
|
.SH MAILING LIST
|
2014-12-16 17:05:05 +03:00
|
|
|
The Mono Mailing lists are listed at http://www.mono-project.com/community/help/mailing-lists/
|
2002-02-12 01:18:46 +03:00
|
|
|
.SH MORE INFORMATION
|
2007-01-01 07:26:28 +03:00
|
|
|
The Mono C# compiler was developed by Novell, Inc
|
2012-03-20 13:06:54 +04:00
|
|
|
(http://www.novell.com) and Xamarin Inc (http://www.xamarin.com) is based on the
|
2002-02-12 01:18:46 +03:00
|
|
|
ECMA C# language standard available here:
|
|
|
|
http://www.ecma.ch/ecma1/STAND/ecma-334.htm
|
2007-01-01 07:26:28 +03:00
|
|
|
.PP
|
2014-12-16 17:05:05 +03:00
|
|
|
The home page for the Mono C# compiler is at http://www.mono-project.com/docs/about-mono/languages/csharp/
|