成果物
コード
実行コマンド。
csbuild
Run() { . "$(cd $(dirname $0); pwd)/csbuild.sh" BuildAndRun $@ } Run $@
ライブラリ。
csbuild.sh
CallCsc() { csc -nologo -recurse:*.cs $@; } CallChmod() { chmod ${2:-755} ${1:-Program.exe}; } RunExe() { ./${1:-Program.exe}; } BuildAndRun() { CallCsc $@ CallChmod RunExe }
説明
ポイントは以下。
CallCsc() { csc -nologo -recurse:*.cs $@; }
- カレントディレクトリ配下にある
.cs
ファイルすべてをビルドする - ロゴを出さない
csbuild
コマンド引数をそのままcsc
に渡す
実行
最小限
以下のC#コードを用意する。
Program.cs
class Program { static void Main() => System.Console.WriteLine("Hello world"); }
ビルドスクリプトを実行する。
csbuild
実行までされるため、以下の出力がされる。
Hello world
複数ファイルもOK
子孫ディレクトリにあるファイルもOK。
- Program.cs
- sub/
- Code0.cs
Program.cs
class Program { static void Main() { new Code0().Run(); } }
Code0.cs
class Code0 { public void Run() => System.Console.WriteLine("Code0"); }
ビルドスクリプトを実行する。
csbuild
実行までされるため、以下の出力がされる。
Code0
問題
- エントリポイント
static void Main()
が必要 - エントリポイントを含んだクラスの名前は
Program
固定のみ- さもなくば実行ファイルは生成されても実行できない
所感
次回はこの問題を解決するスクリプトを書きたい。
対象環境
- 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