csc.exe を使用したコマンド ラインからのビルド
更新 : 2007 年 11 月
C# コンパイラは、その実行可能ファイルの名前 (csc.exe) をコマンド ラインに入力することによって呼び出します。Visual Studio コマンド プロンプトを使用すると、必要な環境変数がすべて自動的に設定されます。Visual Studio のコマンド プロンプトには、[スタート] メニューのショートカットからアクセスできます ([Visual Studio Tools])。そうしない場合は、手動でパスを調整し、任意のサブディレクトリから csc.exe を呼び出すことができるようにしてください。Visual Studio コマンド プロンプトを使用しない場合は、vsvars32.bat を実行し、コマンド ラインからのビルドに必要な環境変数を設定する必要があります。vsvars32.bat の詳細については、「方法 : 環境変数を設定する」を参照してください。
Windows Software Development Kit (SDK) のみがインストールされているコンピュータでは、[SDK コマンド プロンプト] ([Microsoft .NET Framework SDK] メニュー オプションから選択可能) を使用すると、C# コンパイラをコマンド ラインで使用できます。
開発環境からのビルドについては、「方法 : ビルドの準備および管理」を参照してください。
MSBuild を使用して、プログラムによって C# プログラムをビルドすることもできます。詳細については、「MSBuild」を参照してください。
通常、実行可能ファイル csc.exe は、システム ディレクトリの Microsoft.NET\Framework\<version> フォルダに格納されています。ただし、この格納場所は、コンピュータの構成によって異なる場合があります。同じコンピュータに異なるバージョンの .NET Framework がインストールされている場合は、複数バージョンの csc.exe が存在していることになります。このようなインストールの詳細については、「.NET Framework の複数のバージョンのインストール」を参照してください。
ここでは、次の内容について説明します。
コマンド ライン構文の規則
コマンド ラインの例
C# コンパイラと C++ コンパイラの出力の相違点
C# コンパイラのコマンド ライン構文の規則
C# コンパイラは、オペレーティング システムのコマンド ラインで指定された引数を次の規則に従って解釈します。
引数は、空白 (スペースまたはタブ) で区切ります。
キャレット (^) は、エスケープ文字やデリミタとしては認識されません。キャレットは、オペレーティング システムのコマンド ライン パーサーによって処理されてからプログラムの argv 配列に渡されます。
二重引用符で囲まれた文字列 ("string") は、空白を含む場合でも、単一の引数と見なされます。二重引用符で囲んだ文字列を引数に埋め込むこともできます。
円記号を前に付けた二重引用符 (\") は、リテラル二重引用符文字 (") として解釈されます。
二重引用符の直前にある円記号以外は、円記号 (\) として解釈されます。
二重引用符の直前に円記号が偶数個 (0 個は含まない) あると、円記号のペアごとに 1 個の円記号が argv 配列に格納されます。この場合、二重引用符は文字列のデリミタとして解釈されます。
二重引用符の直前に円記号が奇数個 (3 個以上) あると、円記号のペアごとに 1 個の円記号が argv 配列に格納されます。この場合、二重引用符は残った円記号によりエスケープ シーケンスになります。これにより、リテラル二重引用符 (") が argv に追加されます。
C# コンパイラのコマンド ラインのサンプル
File.cs をコンパイルして File.exe を作成します。
csc File.cs
File.cs をコンパイルして File.dll を作成します。
csc /target:library File.cs
File.cs をコンパイルして My.exe を作成します。
csc /out:My.exe File.cs
最適化を有効にし、DEBUG シンボルを定義して、現在のディレクトリにあるすべての C# ファイルをコンパイルします。File2.exe が出力されます。
csc /define:DEBUG /optimize /out:File2.exe *.cs
現在のディレクトリにあるすべての C# ファイルをコンパイルして、デバッグ バージョンの File2.dll を作成します。ロゴや警告は表示されません。
csc /target:library /out:File2.dll /warn:0 /nologo /debug *.cs
現在のディレクトリにあるすべての C# ファイルをコンパイルして、Something.xyz (DLL) に出力します。
csc /target:library /out:Something.xyz *.cs
C# コンパイラと C++ コンパイラの出力の相違点
C# コンパイラを起動してもオブジェクト (.obj) ファイルは作成されず、出力ファイルが直接作成されます。このため、C# コンパイラにはリンカが不要です。