Java

Java屋が触る C# / その2 – コマンドラインでコンパイル・実行

その1 – Visual Studio Express で Hello World
・その2 – コマンドラインでコンパイル・実行
その3 – Mono のインストール・実行

・言語を覚えるにはコマンドラインから!?
Java の世界では IDE なんて生ぬるいのを最初から使うと中で何がどうなっているかわかんなくなっちゃうからまずはテキストエディタと javac で覚えろ!なんてよく言います。
Microsoft の世界では Visual Studio が圧倒的な存在感を持つのでいちいちコマンドラインで慣れようなんて人は少ないかもしれません。
でもやっぱり中で何がどうなってるのかよくわからないのでやってみました。

・C# のコンパイラは何処に?
Java のソースファイル、*.java をコンパイルするのが javac なら、C#のソースファイル、*.cs をコンパイルするのは csc。
検索したら C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 にありました。

・コマンドラインで Hello World のコンパイル・実行
今回は IDE を使わずにコンパイル、実行してみたいので Visual Studio を開かずにホームディレクトリに cstest というディレクトリを掘り、その下に Hello.cs というファイルを作成しました。
ネームスペースについてマナーがよく分からないのでとりあえずデフォルトのネームスペースで昨日のコードとほぼ同じものを書きました。

あとは csc.exe でコンパイル。
クラスファイルの拡張子は Java と同じ .class かな?
とか考えていたらなんと実行可能形式の Hello.exe が生成されていました。

C:\Documents and Settings\Administrator\cstest> C:\WINDOWS\Microsoft.NET\Framewor
k\v2.0.50727\csc.exe Hello.cs
Microsoft(R) Visual C# 2005 Compiler version 8.00.50727.42
for Microsoft(R) Windows(R) 2005 Framework version 2.0.50727
Copyright (C) Microsoft Corporation 2001-2005. All rights reserved.

C:\Documents and Settings\Administrator\cstest>dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は CCCD-95FA です

C:\Documents and Settings\Administrator\cstest のディレクトリ

2006/11/16 23:55 <DIR> .
2006/11/16 23:55 <DIR> ..
2006/11/16 23:30 110 Hello.cs
2006/11/16 23:55 3,072 Hello.exe
2 個のファイル 3,182 バイト
2 個のディレクトリ 17,007,501,312 バイトの空き領域

C:\Documents and Settings\Administrator\cstest>

Hello.exe を指定するだけでそのまま実行できてしまいました。

C:\Documents and Settings\Administrator\cstest>Hello.exe
Hello World

.NetFramework は明示的に呼ばなくても黒子のように勝手に起動してくれるみたい(?)です。
クラスパスもメインクラスも指定しなくて良いのは取っつきやすいですが、複数クラスがあった場合や、外部ライブラリが必要な場合はどうするのか Java 屋さん的には想像がつきませんね。