cscスクリプト(実行ファイル名をfindで取得)
前回より、こっちのほうが素直にできた。
成果物
コード
csrun
Run() { . "$(cd $(dirname $0); pwd)/csrun.sh" BuildAndRun $@ } Run $@
csrun.sh
# C#コードをコンパイル&実行する。 # カレントディレクトリやその子孫にある.csファイルをすべて対象にする。 CallCsc() { csc -nologo -recurse:*.cs $@; } FindExe() { find . -name *.exe; } CallChmod() { chmod ${2:-755} "$1"; } RunExe() { eval "${1:-$(FindExe)}"; } BuildAndRun() { CallCsc $@ local exe_path="$(FindExe)" CallChmod "$exe_path" RunExe "$exe_path" }
実行
C#ソースコード
- Hello.cs
- sub/
- Code0.cs
- sub/
Hello.cs
using System; class Hello { static void Main() { new Code0().Run(); } }
Code0.cs
using System; class Code0 { public void Run() { Console.WriteLine("Code0"); } }
ビルド&実行
./csrun
Code0
できた。
所感
あとはcsc
のコマンド引数を設定してやれば色々できる。
エントリポイントがなければ自動的にクラスライブラリを生成するようにするとかしたい。だが、コード解析など無謀。
前回まで
- dotnetというコマンド名では何をするのかわからない
- dotnetがクソ遅い。cscのほうが速い。
- cscコマンド引数について調べた
- cscスクリプト(複数ファイルをビルド&実行)
- 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