もちろんそれは可能で、プロセスは非常に簡単です。
ここでは、Ubuntu Linux の手順を説明します。
ターミナルを開く:
Ctrl + Alt + T
タイプ
gedit hello.cs
gedit
で 開いたウィンドウで、次のサンプル コードを貼り付けます:
using System;
class HelloWorld {
static void Main() {
Console.WriteLine("Hello World!");
}
}
gedit を保存して閉じます。
端末タイプに戻る:
sudo apt update
sudo apt install mono-complete
mcs -out:hello.exe hello.cs
mono hello.exe
出力:
Hello World!
注:以下の @adabru の回答により、古いモノプラットフォームを使用していない限り、私のソリューションは時代遅れになります。
C# スクリプトは、Python や Perl スクリプトと同じように bash コマンド ラインから実行できますが、これを機能させるには少しの bash マジックが必要です。 Corey が前述したように、最初に Mono をマシンにインストールする必要があります。次に、次のコードを実行可能な bash スクリプトとして Linux マシンに保存します:
if [ ! -f "$1" ]; then
dmcs_args=$1
shift
else
dmcs_args=""
fi
script=$1
shift
input_cs="$(mktemp)"
output_exe="$(mktemp)"
tail -n +2 $script > $input_cs
dmcs $dmcs_args $input_cs -out:${output_exe} && mono $output_exe [email protected]
rm -f $input_cs $output_exe
上記のスクリプトを /usr/bin/csexec として保存したと仮定すると、C# の「スクリプト」の例は次のとおりです。
#!/usr/bin/csexec -r:System.Windows.Forms.dll -r:System.Drawing.dll
using System;
using System.Drawing;
using System.Windows.Forms;
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello Console");
Console.WriteLine("Arguments: " + string.Join(", ", args));
MessageBox.Show("Hello GUI");
}
}
上記のコードを「hello.cs」などのファイルに保存し、実行可能にし、最初の行を以前に保存した bash スクリプトを指すように変更してから実行すると、「Hello」というダイアログとともに次の出力が表示されます。 GUI":
bash-4.2$ ./hello.cs foo bar baz
Hello Console
Arguments: foo, bar, baz
GUI を使用するには、実行レベル 5 である必要があることに注意してください。純粋なテキスト コンソールで実行される、より単純な C# スクリプトを次に示します。
#!/usr/bin/csexec
using System;
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello Console");
Console.WriteLine("Arguments: " + string.Join(", ", args));
}
}
コマンド ライン引数は C# スクリプトに渡されますが、シバン引数 (「-r:System.Windows.Forms.dll -r:System.Drawing.dll」の上の最初の C# スクリプト) は C#コンパイラ。後者の機能を使用すると、必要なコンパイラ引数を C# スクリプトの最初の行で指定できます。
bash スクリプトがどのように機能するかの詳細に興味がある場合は、C# スクリプトの最初の行で渡されたすべての引数をシバン (#!) でひとまとめにし、その後にスクリプト名、スクリプトに渡されたコマンド ライン引数を続けます。自体。上記の最初の C# の例では、次の 5 つの引数が bash スクリプトに渡されます (引用符で区切られています)。
"-r:System.Windows.Forms.dll -r:System.Drawing.dll" "hello.cs" "foo" "bar" "baz"
スクリプトは、最初の引数がファイル名ではないと判断し、C# コンパイラの引数が含まれていると想定します。次に、'tail' を使用して C# スクリプトの最初の行を取り除き、結果を一時ファイルに保存します (C# コンパイラは stdin から読み取らないため)。最後に、コンパイラの出力は別の一時ファイルに保存され、スクリプトに渡された元の引数を使用して mono で実行されます。 「シフト」演算子を使用して、コンパイラの引数とスクリプト名を削除し、スクリプトの引数のみを残します。
C# スクリプトが実行されると、コンパイル エラーがコマンド ラインにダンプされます。
#!
(hashbang) タグは、perl、php、bash、sh などのスクリプトが正しく実行されるように、使用するインタープリターをシェルに伝えるために使用されます。
ただし、C# はスクリプト言語ではなく、実行可能な形式にコンパイルすることを目的としています。 C# を使用する場合は、少なくともコンパイラとランタイムをインストールする必要があります。できれば、アプリケーションの開発とデバッグに役立つ IDE (統合開発環境) をインストールする必要があります。
コンパイラとランタイム用に Mono をインストールしてから、IDE 用に MonoDevelop をインストールします。