X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=man%2Fmcs.1;h=607cea480479125836e6824cf147a81f08b63af4;hb=43e9ddc1fcddb632fc1e661495e468a2ebdf6fec;hp=e7a20c4147388933bee11c6ab8a722e143d311d2;hpb=b87c7e29df7d04e3199e224c8b8e9a41292cec1b;p=mono.git diff --git a/man/mcs.1 b/man/mcs.1 index e7a20c41473..607cea48047 100644 --- a/man/mcs.1 +++ b/man/mcs.1 @@ -4,40 +4,27 @@ .. .TH mcs 1 "6 January 2001" .SH NAME -mcs, gmcs, smcs \- Mono C# Compiler (1.0, 2.0, Moonlight) +mcs \- Turbo C# Compiler .SH SYNOPSIS .B mcs [option] [source-files] .SH 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. +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. .PP The .I mcs -compiler is used to compile against the 1.x profile and implements -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# 3.0 specification. -.PP -The -.I smcs -compiler is used to compile against the Silverlight/Moonlight profile. -This profile is designed to be used for creating Silverlight/Moonlight -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). +compiler is used to compile against the latest Mono Base Class Library +version and fully implements C# 1.0, 2.0, 3.0, 4.0, 5.0 and 6.0 +specifications with partial support for C# 7.0. .PP See the section on packages for more information. .PP -The Mono C# compiler accepts the same command line options that the +The Turbo C# compiler accepts the same command line options that the 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 @@ -51,13 +38,13 @@ 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 -The Mono C# compiler generates images (.exe files) that contain CIL +The Turbo 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. .PP -The Mono C# compiler by default only references three assemblies: +The Turbo C# compiler by default only references three assemblies: 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. @@ -67,7 +54,7 @@ use the -pkg:dotnet command line option. .SH OPTIONS .TP .I \-\-about -Displays information about the Mono C# compiler +Displays information about the Turbo C# compiler .TP .I \-\-addmodule:MODULE1[,MODULE2] Includes the specified modules in the resulting assembly. Modules are @@ -109,10 +96,10 @@ or can be used by methods that have been tagged with the Conditional attribute. .TP .I \-debug, \-debug+ -Generate debugging information. To obtain stack traces with debugging +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. +flag. The debugging information is stored in a MDB file located in +same output folder as produced assembly. .TP .I \-debug- Do not generate debugging information. @@ -136,10 +123,23 @@ precedence over the attributes. Extracts the C#/XML documentation from the source code and stores in in the given FILE. .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 @@ -165,7 +165,7 @@ The possible values are: .TP .I "Default" Instruct compiler to use the latest version. Equivalent is to omit the -switch (this currently defaults to the C# 3.0 language specification). +switch (this currently defaults to the C# 6.0 language specification). .TP .I "ISO-1" Restrict compiler to use only first ISO standardized features. @@ -176,11 +176,30 @@ methods will lead to error. Restrict compiler to use only the second ISO standardized features. This allows the use of generics, static classes, iterators and anonymous methods for example. +.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 +.I "4" +Restrict the compiler to use only the features available in C# 4.0 +specification. +.TP +.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 +.I "experimental" +Enables unstable features from upcoming versions of the language. .PP -Notice that this flag only controls the language features available to -the programmer, it does not control the kind of assemblies produced. -Programs compiled with mcs will reference the 1.1 APIs, Programs -compiled with gmcs reference the 2.0 APIs. +Notice that this flag only restricts the language features available to +the programmer. A version of produced assemblies can be controlled using +.I SDK +option. .ne .RE .TP @@ -209,9 +228,10 @@ Makes the compiler ignore warnings specified in the comma-separated list WARNLIST> .TP .I -optimize, -optimize+, -optimize- -Controls whether to perform optimizations on the code. -optimize and +Controls compiler code generation optimizations on the code. Using -optimize or -optimize+ will turn on optimizations, -optimize- will turn it off. -The default in mcs is to optimize+. +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. .TP .I -out:FNAME, -o FNAME Names the output file to be generated. @@ -219,6 +239,9 @@ Names the output file to be generated. .I \-\-parse Used for benchmarking. The compiler will only parse its input files. .TP +.I \-pathmap:K=V[,Kn=Vn] +Sets a mapping for source path names used in generated output. +.TP .I \-pkg:package1[,packageN] Reference assemblies for the given packages. .Sp @@ -239,36 +262,14 @@ This will instruct the compiler to reference the System.* libraries available on a typical dotnet framework installation, notice that this does not include all of the Mono libraries, only the System.* ones. This is a convenient shortcut for those porting code. -.TP -.I \-pkg:olive -Use this to reference the "Olive" libraries (the 3.0 and 3.5 extended -libraries). -.TP -.I \-pkg:silver -References the assemblies for creating Moonlight/Silverlight -applications. This is automatically used when using the -.I smcs -compiler, but it is here when developers want to use it with the -.I gmcs -compiler. -.TP -.I \-pkg:silverdesktop -Use this option to create Moonlight/Silverlight applications that -target the desktop. This option allows developers to consume the -Silverlight APIs with the full 2.0 profile API available to them, -unlike -.I smcs -it gives full access to all the APIs that are part of Mono. The only -downside is that applications created with silverdesktop will not run -on the browser. Typically these applications will be launched -with the -.I mopen -command line tool. -.TP -For more details see the PACKAGE section in this document .ne .RE .TP +.I \-platform:ARCH +Used to specify the target platform. The possible values are: anycpu, +anycpu32bitpreferred, arm, x86, x64 or itanium. The default option is +anycpu. +.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 @@ -330,6 +331,14 @@ shell will perform globbing, so you might want to use it like this: $ mcs -recurse:'*.cs' .fi .TP +.I \-sdk:VERSION +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/. +.TP .I \-\-shell Starts up the compiler in interactive mode, providing a C# shell for statements and expressions. A shortcut is to use the @@ -359,11 +368,15 @@ Debugging. Turns on verbose yacc parsing. 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] +.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 4. @@ -380,10 +393,13 @@ assembly. Use this to stop option parsing, and allow option-looking parameters to be passed on the command line. .PP -.SH PACKAGES -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. +.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 The compiler uses the library path to locate libraries, and is able to reference libraries from a particular package if that directory is @@ -504,21 +520,21 @@ funded by Ximian, Novell and Marek Safar. .SH LICENSE 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. -Alternative licensing for the compiler is available from Novell. +Alternative licensing for the compiler is available from Xamarin. .PP .SH SEE ALSO -csharp(1), mdb(1), mono(1), mopen(1), mint(1), pkg-config(1),sn(1) +csharp(1), mono(1), pkg-config(1), sn(1) .PP .SH BUGS To report bugs in the compiler, you must file them on our bug tracking system, at: -http://www.mono-project.com/Bugs +http://www.mono-project.com/community/bugs/ .SH MAILING LIST -The Mono Mailing lists are listed at http://www.mono-project.com/Mailing_Lists +The Mono Mailing lists are listed at http://www.mono-project.com/community/help/mailing-lists/ .SH MORE INFORMATION The Mono C# compiler was developed by Novell, Inc -(http://www.novell.com, http) and is based on the +(http://www.novell.com) and Xamarin Inc (http://www.xamarin.com) is based on the ECMA C# language standard available here: http://www.ecma.ch/ecma1/STAND/ecma-334.htm .PP -The home page for the Mono C# compiler is at http://www.mono-project.com/CSharp_Compiler +The home page for the Mono C# compiler is at http://www.mono-project.com/docs/about-mono/languages/csharp/