やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

cscコマンド引数について調べた

 自己主張が激しくてウザい。

情報源

cscコマンド

csc Program.cs
chmod 755 Program.exe
./Program.exe
Hello world

ソースコード

Program.cs

class Program
{
    static void Main() => System.Console.WriteLine("Hello world");
}

使いそうな引数

引数 概要
-recurse 再帰的にソースコードファイルを探す
-nologo ロゴ出力をなくす
csc -nologo -recurse:*.cs
chmod 755 Program.exe
./Program.exe

ヘルプ

引数 概要
-?, -help 引数一覧を表示する。

入力系

引数 概要
-lib 参照するDLLのパス
-reference 参照するDLL
-addmodule 参照するDLL(実行時exeと同階層に必要なDLL)

出力系

引数 概要
-out 出力する実行ファイルの名前
-doc 出力するドキュメントのファイル名
-optimize 実行ファイルを最適化する。
-target 実行ファイルの形式を決める。

実行ファイル形式

 使いそうなのは以下。moduleって何?

引数 概要
/target:exe .exe ファイルを作成する場合。
/target:library コード ライブラリを作成する場合。
/target:module モジュールを作成する場合。

 以下は使わないだろう。

引数 概要
/target:appcontainerexe Windows 8.x ストア アプリの .exe ファイルを作成する場合。
/target:winexe Windows プログラムを作成する場合。
/target:winmdobj .winmdobj 中間ファイルを作成する場合。

所感

 Microsoftの自己主張がウザい。

自己主張ウザい

 -nologoしないかぎり不要な出力が毎回される。クソウザい。ヘルプのときだけ出せばいいと思う。コンパイルするたびに「俺だよ俺、ねぇねぇすごいでしょ?」とかされるのウザい。毎回コマンドに-nologo書くの面倒。余計な仕事を増やさないでくれ。

Microsoft (R) Visual C# Compiler version 3.100.19.26603 (9d80dea7)
Copyright (C) Microsoft Corporation. All rights reserved.

 実行ファイル形式もWindowsだけ多数の種類がある。面倒くせぇ。実行ファイルすら使い分けねばならないのかよ。面倒くさそう。よかったLinuxで。

独自形式ウザい

 コマンドの形式が-param valueでなく-param:valueなのもウザい。一般的な形式に合わせろ。自動化しづらくなるだろ。値の分離処理を実装しないと取得できないじゃん。

シンプルにしたい

 exeをビルドして実行するまでを一発でやってくれるスクリプトを書きたい。

対象環境

$ uname -a
Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux