Edited at

Visual Studio が無い Windows 環境で c# コードをコンパイルする

More than 3 years have passed since last update.

これまでC#アプリの開発には Visual Studio が必要であると信じられてきた(?)。しかし我々は.NET Framework がインストールされたWindows環境であれば、Visual Studio を使用せずにC#コードのコンパイルが可能であることを突き止めた。

.NET Framework は windows vista 以降の windows os に標準でインストールされている。これは良識のある企業、すなわち windows xp のサポート切れに伴い常用パソコンをリプレースした全ての企業において、一般従業員でもC#によるアプリ開発できることを意味する。

この記事では、SEという名の事務職へC#アプリ開発の方法を提供する。

.NET Framework には csc.exe という C# コンパイラが含まれるので、これを使用する。このコンパイラのインストールパスを記載しても良いが、どうせなら自分で探すことを覚えて欲しいので以下に検索用のコマンドを示す。


cmd.exe

C:\Windows> dir /b /s | findstr csc.exe$


複数のパスが見つかっただろうか? 見つからなかった場合は C# 開発者として活躍する妄想を忘れて事務職に戻って欲しい。おそらく貴方は未だwindows xp 以前のOSを使用しているか、フォルダへのアクセスが制限されている。

複数のパスが見つかった場合は、自身の環境に合ったバージョンのコンパイラを選択する必要がある。通常はバージョン番号の大きいものを選択すれば良い。あなたの環境で動けば同僚の環境でも動くだろう。また 64bit, 32bit の区別はあるが、あまり気にする必要はない。64bit 版が使用できるのであれば 64bit 版を使用すれば良い。ただし winsxs というフォルダに含まれるコンパイラは使用しない方が無難である。このフォルダは Windows OS がバージョン管理をするために使用している。

使用するコンパイラが決まれば、その使い方を覚える必要がある。最も簡単な使い方は以下のようになる。


cmd.exe

C:\dev_folder> C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe source_file.cs


このように、コンパイラの引数にC#のソースコードを与えると、カレントディレクトリ(この場合は C:\dev_folder)に実行ファイルが生成される。

これで C# 開発者への道が開かれた。ただ、上記のコマンドは少々長ったらしいので、通常はバッチファイルを作成すると良いだろう。コンパイルバッチは、コンパイル時のオプションを大量に指定する必要があるときや、後述するアセンブリ参照を追加するときにも便利である。


compile.bat

@echo off

C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe %1
%~n1.exe

実行するには以下のようにコマンドを叩けば良い。


cmd.exe

C:\dev_folder> compile.bat source_file.cs


このバッチを実行すると、コンパイルに続けて生成されたファイルが実行される。デバッグのためにファイルを実行することはよくあるので、普通はこの動きで問題ないだろう。勝手に実行されては困るのであれば compile.bat の三行目をコメントアウトするなりして欲しい。

以上で簡易なアプリ開発の準備が整った。ただし少し凝った(業務的に欲しい機能を持った)アプリを開発するのであればアセンブリ参照を追加する必要がある。アセンブリ参照を追加する方法は Visual Studio を使用した方法が一般的だ。Visual Studio を使用すると GUI でアセンブリが一覧されており、ネットの情報を頼りにするだけでも簡単にアセンブリを選択することができる。しかしながら csc.exe を使用する場合は必要なアセンブリを探すところからスタートするため一筋縄ではいかない。

アセンブリについては以下の記事が詳しい。

GAC(グローバル・アセンブリ・キャッシュ)からファイルを取り出すには? - @IT

上記のようにして取り出したアセンブリを、コンパイル時に参照するためには compile.bat に以下のようなオプションを追加すれば良い。


compile.bat

@echo off

C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe ^
/r:xxx.dll ^
/r:yyy.dll ^
/r:zzz.dll ^
... ^
%1
%~n1.exe

これで .NET 資源を利用したC#アプリの開発環境が整った。

この記事によって、事務職がエンジニアとしての尊厳を取り戻すことになれば幸いである。


ちなみに Excel を利用可能にするアセンブリは以下です(´・ω・`)

Excel エンジニア生きて(´・ω・`)

C:\Windows> dir /s /b | findstr dll$ | findstr Excel

C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\14.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll
...
...
...