C#ツアー はじめに cscでコンパイルする
チュートリアルよりこっちを先にやるべきだったのでは?
成果物
情報源
概要
csc
コマンドでC#コードを実行する。
1. 速攻
ソースコード作成
0.sh
code=$(cat << 'EOS' using System; class Hello { static void Main() { Console.WriteLine("Hello, World"); } } EOS ) echo "$code" > Hello.cs
コンパイルする
csc Hello.cs
実行する
chmod 755 Hello.exe
./Hello.exe
結果
Hello, World
2. クラス名を受け取れるようにする
ソースコード作成。
1.sh
class_name=Hello code=$(cat << EOS using System; class $class_name { static void Main() { Console.WriteLine("Hello, World"); } } EOS ) echo "$code" > "$class_name.cs"
ビルド。
csc $class_name.cs
実行。
chmod 755 $class_name.exe
./$class_name.exe
最終スクリプト
4.sh
# C# HelloWorld # 1. ソースコードを生成する # 2. ビルドする # 3. 実行する Define() { class_name=${1:-Hello} CreateSourceCodeFile() { code=$(cat <<- EOS using System; class $class_name { static void Main() { Console.WriteLine("Hello, World"); } } EOS ) echo "$code" > "$class_name.cs" } Build() { csc $class_name.cs; } Chmod() { chmod 755 $class_name.exe; } Execute() { ./$class_name.exe; } } Runable() { CreateSourceCodeFile Build Chmod Execute } Run() { Define "$@" Runable } Run "$@"
以下、実行例。第1引数にクラス名を指定できる。省略されたらHello
。
4.sh # Hello.cs, Hello.exe 4.sh AAAAA # AAAAA.cs, AAAAA.exe
nullable
ビルドオプション
csc $class_name.cs /nullable:enable /langversion:8
所感
dotnet run
は60秒くらいかかるのに、csc
なら5秒くらい。圧倒的高速!
ちょっと試したいときはcsc
のほうが良さそう。
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13 ※
- bash 4.4.12(1)-release ※
- SQLite 3.29.0 ※
- C# dotnet 3.0.100 ※
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux