C# の基礎中の基礎 - 開発環境

 [Home] |  [Index] | 投稿日 2015/05/09


 

C# コンパイラ

通常は Visual Studio を使ってコンパイルしますが、アプリケーションの規模が大きかったり(読み込みに時間がかかる)、バッチ処理などバックグランドでコンパ入りしたい場合は C# コンパイラを使ってビルドしたい場合があります。

C# コンパイラは、Visual Studio をインストールすれば一緒にインストールされます。使い方ですが、コマンドプロンプトから実行しようとしてもパスが通っていないので、スタートメニューから Visual Studio メニューを探しその中の「開発者コマンドプロンプト」を開きます。「開発者コマンドプロンプト」から次のコマンドを入力してバージョン番号を確認します。これはヘルプも同時に表示されます。

csc /?

PowerShell から使う場合は、コマンドプロンプトの PATH の内容を調べて PowerShell の PATH に追加します。


使用例

PS C:\workspace\dotNET\C#\File> csc FileTest.cs
Microsoft (R) Visual C# Compiler Version 4.0.30319.34209
for Microsoft (R) .NET Framework 4.5
Copyright (C) Microsoft Corporation. All rights reserved.

外部のアセンブリが必要な場合は、/r: オプションで指定します。

C:\workspace\dotNET\C#\ADO2>csc MySQL1.cs /r:MySql.Data.dll
Microsoft (R) Visual C# Compiler Version 4.0.30319.34209
for Microsoft (R) .NET Framework 4.5
Copyright (C) Microsoft Corporation. All rights reserved.

よく使うと思われるオプションを下に示します。

オプション 説明
/out:<ファイル> 出力ファイル名を指定します。
/target:exe または /t:exe コンソール アプリケーションをビルドします。(既定)
/target:winexe または /t:winexe Windows 実行可能ファイルをビルドします。
/target:library または /t:library ライブラリをビルドします。
/target:module または /t:module 別のアセンブリに追加できるモジュールをビルドします。
/doc:<ファイル> 生成する XML ドキュメント ファイル
/recurse:<ワイルドカード> ワイルドカードの指定に従い、現在のディレクトリとサブディレクトリ内のすべてのファイルをインクルードします。
/reference:<エイリアス>=<ファイル> または /r:<エイリアス>=<ファイル> 指定されたエイリアスを使用して、指定されたアセンブリ ファイルからメタベースを参照する。
/reference:<ファイル リスト> または /r:<ファイル リスト> 指定されたアセンブリ ファイルからメタベースを参照する。
/main:<型> または /m<型> メインメソッドを持つクラスを指定します。
codepage:<n> ソース ファイルを開くときに使用するコードページを指定します。SJIS は 932 です。UTF-8 は utf8 です。
/utf8output メインメソッドを持つクラスを指定します。
/nologo コンパイル時の著作権メッセージを表示しません。
/warn:<n> または /w:<n> 警告レベル (0-4) を設定する。
/define:<シンボルリスト> または /d:<シンボルリスト> 条件付きコンパイル シンボルを定義する。
@<ファイル> 応答ファイルを読み取り、オプションを追加します。

mono C# コンパイラ

C# は Windows だけでなく Linux でも使用可能です。使うためには Mono というのを入れなくてはなりません。Debian (Ubuntu) では mono-complete というパッケージです。

mono の C# コンパイラは複数あって基本は mcs ですが、gmcs やら smcs, dmcs やらもあります。

mcs は C# 1.x + α 相当らしいので古いです。gmcs は C# 3.0 相当、smcs は Silverlight (Moonlight) 対応だそうです。dmcs は最新?。ヘルプは mcs -? などとすると表示されます。

コマンドのオプションですが、Microsoft の C# コンパイラに基本的に準拠しています。ただし、/ の代わりに - を使います。例えば、csc ではヘルプの表示は /help ですが、mcs では -help になります。

mcs 他では codepage オプションを付けないと日本語は文字化けします。


実行

Windows ではコンパイル結果は EXE なので、他の EXE ファイル同様に実行できます。

Linux では古いバージョンでは mono コマンドで EXE ファイルを指定する必要があります。

(例) mono Test.exe

最近のバージョンでは、直接、EXE ファイルを指定できますが、拡張子 (.exe) は省略できません。他の実行ファイルもそうですが、ファイルの名前の前に ./ が必要です。

(例) ./Test.exe

MSBuild

MSBuild は .NET Framework のビルドツールです。Visual Studio が作った .csproj や .sln ファイルを使ってビルドができます。逆に、手動でこれらのファイルを作るのはたいへんなので既存のファイルをモディファイして使うほうが楽です。

この他、多彩な機能があるようです。

Mono の場合は、xbuild というのが MSBuild の mono バージョンだそうです。これは、mono とは別にインストールする必要があるようです。

(例) sudo apt-get install mono-xbuild

IL アセンブラ

.NET Framework は Java のように 仮想マシン (VM) で動作するフレームワークですが、その VM のアセンブリ語が IL と呼ばれます。この IL をアセンブルして VM で直接実行可能なポータブル実行可能 (PE) ファイルに変換するのが、ilasm.exe というアセンブラです。

普通の開発でこのツールを使うことはないと思いますが、どんな原理でプログラムが実行されるのかを知るにはいいかもしれません。


Sandcastle

Sandcastle は C# のソースに追加したコメントから生成された XML ファイルを元に Windows ヘルプを生成するツールです。

XML ドキュメントを生成するには Visual Studio でプロジェクトのプロパティ画面を開き「ビルド」タブのメニューでチェックボックスにチェックを入れます (Visual Studio のバージョンにより異なる可能性あり) 。このコメントは先頭が /// であるようなコメントで Visual Studio では /// と入力すると自動的にソースに挿入されます。


NuGet

NuGet はオープンソースのパッケージマネージャで、オープンソースで開発された生産物を配布しています。Visual Studio の「ツール」メニューに「NuGet パッケージマネージャ」というメニューがあり、それを使ってパッケージの管理ができます。(Visual Studio のバージョンによってはメニューが異なる可能性がある)


 

このページのトップへ