X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=man%2Fcsharp.1;h=430a160896890929ca709deef67a6085bdd83460;hb=HEAD;hp=00e1ce967c611f183c84eb93e06180c95a84bfe5;hpb=30c650100544c532caf34f9fe34c246f23200c39;p=mono.git diff --git a/man/csharp.1 b/man/csharp.1 index 00e1ce967c6..430a1608968 100644 --- a/man/csharp.1 +++ b/man/csharp.1 @@ -2,24 +2,94 @@ .if t .sp .5v .if n .sp .. -.TH csharp 1 "4 September 2008" +.TH csharp 1 "22 March 2017" .SH NAME -csharp \- Interactive C# Shell +csharp \- Interactive C# Shell and Scripting .SH SYNOPSIS -.B csharp -[options] +.B csharp [--attach PID] [-e EXPRESSION] [file1 [file2]] +[compiler-options] [--|-s script-options] .SH DESCRIPTION The .I csharp -is an interactive C# shell that allows the user to enter and evaluate -C# statements and expressions from the command line. -.PP -This command is a shortcut to invoke the -.I gmcs -command with the -.I \-\- shell -command line option. All of the regular compiler options available -to gmcs are available in the interactive shell. +command is an interactive C# shell and scripting host that allows +the user to enter and evaluate C# statements and expressions from +the command line or execute C# scripts. +The regular +.I mcs +command line options can be used in this version of the compiler. +.PP +Files specified in the command line will be loaded and executed as +scripts. +.PP +Starting with Mono 2.10, the +.I csharp +command can be used as an interpreter executed by executables flagged +with the Unix execute attribute. To do this, make the first line of +your C# source code look like this: +.PP +.nf + #!/usr/bin/csharp + Console.WriteLine ("Hello, World"); +.fi +.PP +Starting with Mono 5.0, command line arguments may now be passed +to the +.I csharp +command by specifying either the +.I -s +or +.I -- +(script) options. +.PP +The +.I -s +option is ideal for interpreting executable scripts that utilize +shebang syntax (introduced in Mono 2.10). This allows command line +arguments to be passed to and consumed cleanly by the script: +.PP +.nf + #!/usr/bin/csharp -s + foreach (var arg in Args) + Console.WriteLine ($"script argument: {arg}"); +.fi +.SH OPTIONS +The commands accept all of the commands that are available to the +.I mcs +command, so you can reference assemblies, specify paths, language +level and so on from the command line. In addition, the following +command line options are supported: +.TP +.I "\-s" SCRIPT_FILE +This option is ideal for authoring executable scripts that utilize +the Unix shebang feature. Unix will implicitly append as an argument +the path of the script to execute. When the executable is invoked, +any arguments then passed to it will be available in the +.I Args +global. Example: +.I "#!/usr/bin/env csharp -s" +.TP +.I "\-\-" +Any arguments that follow will not be passed to the compiler driver, +and instead will be made available in the +.I Args +global. Example: +.I csharp -- a b c +will result in Args = { "a", "b", "c" } in the interactive shell. +.TP +.I "\-\-attach" +This is an advanced option and should only be used if you have a deep +understanding of multi-threading. This option is availble on the +.I csharp +command and allows the compiler to be injected into other processes. +This is done by injecting the C# shell in a separate thread that runs +concurrently with your application. This means that you must take +special measures to avoid crashing the target application while using +it. For example, you might have to take the proper locks before +issuing any commands that might affect the target process state, or +sending commands through a method dispatcher. +.TP +.I "\-e" EXPRESSION +This will evaluate the specified C# EXPRESSION and exit .SH OPERATION Once you launch the csharp command, you will be greeted with the interactive prompt: @@ -179,11 +249,12 @@ csharp> .SH INTERACTIVE EDITING The C# interactive shell contains a line-editor that provides a more advanced command line editing functionality than the operating system -provides. +provides. These are available in the command line version, the GUI +versions uses the standard Gtk# key bindings. .PP The command set is similar to many other applications (cursor keys) and incorporates some of the Emacs commands for editing as well as a -history mechanism to +history mechanism too. .PP .PP The following keyboard input is supported: @@ -206,7 +277,7 @@ line in the history. .TP .I Down Arrow Key, Control-n Moves forward in the history, replaces the current line with the next -lien in the history. +line in the history. .TP .I Return Executes the current line if the statement or expression is complete, @@ -249,6 +320,19 @@ statements and expressions are executed are static, they can be invoked directly from the shell. These are the available properties and methods: .TP +.I Args +An easy to consume array of any arguments specified after either +.I -s +or +.I -- +on the command line. Ideal for self-executing scripts utilizing the +.I -s +option. +.TP +.I void LoadAssembly(string assembly) +Loads the given assembly. This is equivalent to passing the compiler +the -r: flag with the specified string. +.TP .I void LoadPackage(string package) Imports the package specified. This is equivalent to invoking the compiler with the -pkg: flag with the specified string. @@ -284,13 +368,22 @@ csharp> .PP The return value is a TimeSpan, that you can store in a variable for benchmarking purposes. +.SH GUI METHODS AND PROPERTIES +In addition to the methods and properties available in the console +version there are a handful of extra properties available on the GUI +version. For example a "PaneContainer" Gtk.Container is exposed that +you can use to host Gtk# widgets while prototyping or the "MainWindow" +property that gives you access to the current toplevel window. .SH STARTUP FILES -The C# shell will load all the C# script files and Mono assemblies -located in the ~/.config/csharp directory on Unix. C# script files -are files that have the extension .cs and they should only contain -statements and expressions, they can not contain full class -definitions (at least not as of Mono 2.0). Full class definitions -should be compiled into dlls and stored in that directory. +The C# shell will load all the Mono assemblies and C# script files +located in the ~/.config/csharp directory on Unix. The assemblies are +loaded before the source files are loaded. +.PP +C# script files are files +that have the extension .cs and they should only contain statements +and expressions, they can not contain full class definitions (at least +not as of Mono 2.0). Full class definitions should be compiled into +dlls and stored in that directory. .SH AUTHORS The Mono C# Compiler was written by Miguel de Icaza, Ravi Pratap, Martin Baulig, Marek Safar and Raja Harinath. The development was @@ -304,9 +397,9 @@ gmcs(1), mcs(1), mdb(1), mono(1), pkg-config(1) .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 @@ -314,5 +407,5 @@ 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 information about the -interactive mode for C# is available in http://mono-project.com/CsharpRepl +http://www.mono-project.com/docs/about-mono/languages/csharp/ information about the +interactive mode for C# is available in http://mono-project.com/docs/tools+libraries/tools/repl/