csc.exe を使用したコマンド ラインからのビルドCommand-line build with csc.exe

C# コンパイラは、その実行可能ファイルの名前 (csc.exe) をコマンド プロンプトに入力することによって呼び出します。You can invoke the C# compiler by typing the name of its executable file (csc.exe) at a command prompt.

Visual Studio 用開発者コマンド プロンプト ウィンドウを使用した場合、必要なすべての環境変数が設定されます。If you use the Developer Command Prompt for Visual Studio window, all the necessary environment variables are set for you. このツールを表示する方法については、「Visual Studio 用開発者コマンド プロンプト」トピックをご覧ください。For information on how to access this tool, see the Developer Command Prompt for Visual Studio topic.

標準のコマンド プロンプト ウィンドウを使用する場合は、コンピューター上の任意のサブディレクトリから csc.exe を呼び出すことができるようにパスを修正する必要があります。If you use a standard Command Prompt window, you must adjust your path before you can invoke csc.exe from any subdirectory on your computer. また、vsvars32.bat を実行して、コマンド ライン ビルドをサポートするための適切な環境変数を設定する必要があります。You also must run vsvars32.bat to set the appropriate environment variables to support command-line builds. 検索して実行する方法の手順など、vsvars32.bat の詳細については、「方法: Visual Studio のコマンド ラインのための環境変数を設定する」を参照してください。For more information about vsvars32.bat, including instructions for how to find and run it, see How to: Set Environment Variables for the Visual Studio Command Line.

Windows Software Development Kit (SDK)Windows Software Development Kit (SDK) のみがインストールされているコンピューターでは、SDK コマンド プロンプト ([Microsoft .NET Framework SDK] メニュー オプションから開くことができます) で C# コンパイラを使用できます。If you're working on a computer that has only the Windows Software Development Kit (SDK)Windows Software Development Kit (SDK), you can use the C# compiler at the SDK Command Prompt, which you open from the Microsoft .NET Framework SDK menu option.

MSBuild を使用して、プログラムによって C# プログラムをビルドすることもできます。You can also use MSBuild to build C# programs programmatically. 詳細については、「MSBuild」を参照してください。For more information, see MSBuild.

通常、実行可能ファイル csc.exe は、Windows ディレクトリの Microsoft.NET\Framework\<バージョン> フォルダーに格納されています。The csc.exe executable file usually is located in the Microsoft.NET\Framework\<Version> folder under the Windows directory. ただし、この格納場所は、特定のコンピューターの構成によって異なる場合があります。Its location might vary depending on the exact configuration of a particular computer. 複数のバージョンの .NET Framework がコンピューターにインストールされている場合、このファイルのバージョンが複数見つかります。If more than one version of the .NET Framework is installed on your computer, you'll find multiple versions of this file. このようなインストールの詳細については、「方法: インストールされている .NET Framework バージョンを確認する」を参照してください。For more information about such installations, see How to: determine which versions of the .NET Framework are installed.


Visual Studio IDE を使用してプロジェクトをビルドすると、csc コマンドとその関連するコンパイラ オプションが出力ウィンドウに表示されます。When you build a project by using the Visual Studio IDE, you can display the csc command and its associated compiler options in the Output window. この情報を表示するには、「方法: ビルド ログ ファイルを表示、保存、および構成する」の手順に従って、ログ データの詳細レベルを [標準] または [詳細] に変更します。To display this information, follow the instructions in How to: View, Save, and Configure Build Log Files to change the verbosity level of the log data to Normal or Detailed. プロジェクトをリビルドした後、C# コンパイラの呼び出しを見つけるために出力ウィンドウで csc を検索します。After you rebuild your project, search the Output window for csc to find the invocation of the C# compiler.

このトピックの内容In this topic

C# コンパイラのコマンド ライン構文の規則Rules for command-line syntax for the C# compiler

C# コンパイラは、オペレーティング システムのコマンド ラインで指定された引数を次の規則に従って解釈します。The C# compiler uses the following rules when it interprets arguments given on the operating system command line:

  • 引数は、空白 (スペースまたはタブ) で区切ります。Arguments are delimited by white space, which is either a space or a tab.

  • キャレット (^) は、エスケープ文字やデリミターとしては認識されません。The caret character (^) is not recognized as an escape character or delimiter. キャレットは、オペレーティング システムのコマンド ライン パーサーによって処理されてからプログラムの argv 配列に渡されます。The character is handled by the command-line parser in the operating system before it's passed to the argv array in the program.

  • 二重引用符で囲まれた文字列 ("string") は、空白を含む場合でも、単一の引数と見なされます。A string enclosed in double quotation marks ("string") is interpreted as a single argument, regardless of white space that is contained within. 二重引用符で囲んだ文字列を引数に埋め込むこともできます。A quoted string can be embedded in an argument.

  • 円記号を前に付けた二重引用符 (\") は、リテラル二重引用符文字 (") として解釈されます。A double quotation mark preceded by a backslash (\") is interpreted as a literal double quotation mark character (").

  • 二重引用符の直前にある円記号以外は、円記号 () として解釈されます。Backslashes are interpreted literally, unless they immediately precede a double quotation mark.

  • 二重引用符の直前に円記号が偶数個 (0 個は含まない) あると、円記号のペアごとに 1 個の円記号が argv 配列に格納されます。この場合、二重引用符は文字列のデリミターとして解釈されます。If an even number of backslashes is followed by a double quotation mark, one backslash is put in the argv array for every pair of backslashes, and the double quotation mark is interpreted as a string delimiter.

  • 二重引用符の直前に円記号が奇数個 (3 個以上) あると、円記号のペアごとに 1 個の円記号が argv 配列に格納されます。この場合、二重引用符は残った円記号によりエスケープ シーケンスになります。If an odd number of backslashes is followed by a double quotation mark, one backslash is put in the argv array for every pair of backslashes, and the double quotation mark is "escaped" by the remaining backslash. これにより、リテラル二重引用符 (") が argv に追加されます。This causes a literal double quotation mark (") to be added in argv.

C# コンパイラのコマンド ラインのサンプルSample command lines for the C# compiler

  • File.cs をコンパイルして File.exe を作成します。Compiles File.cs producing File.exe:
csc File.cs 
  • File.cs をコンパイルして File.dll を作成します。Compiles File.cs producing File.dll:
csc -target:library File.cs
  • File.cs をコンパイルして My.exe を作成します。Compiles File.cs and creates My.exe:
csc -out:My.exe File.cs
  • 最適化を有効にし、DEBUG シンボルを定義して、現在のディレクトリにあるすべての C# ファイルをコンパイルします。Compiles all the C# files in the current directory with optimizations enabled and defines the DEBUG symbol. File2.exe が出力されます。The output is File2.exe:
csc -define:DEBUG -optimize -out:File2.exe *.cs
  • 現在のディレクトリにあるすべての C# ファイルをコンパイルして、デバッグ バージョンの File2.dll を作成します。Compiles all the C# files in the current directory producing a debug version of File2.dll. ロゴや警告は表示されません。No logo and no warnings are displayed:
csc -target:library -out:File2.dll -warn:0 -nologo -debug *.cs
  • 現在のディレクトリにあるすべての C# ファイルをコンパイルして、 (DLL) に出力します。Compiles all the C# files in the current directory to (a DLL):
csc -target:library *.cs

C# コンパイラと C++ コンパイラの出力の相違点Differences between C# compiler and C++ compiler output

C# コンパイラを起動してもオブジェクト (.obj) ファイルは作成されず、出力ファイルが直接作成されます。There are no object (.obj) files created as a result of invoking the C# compiler; output files are created directly. このため、C# コンパイラにはリンカーが不要です。As a result of this, the C# compiler does not need a linker.

関連項目See also

C# コンパイラ オプションC# Compiler Options
アルファベット順の C# コンパイラ オプションの一覧C# Compiler Options Listed Alphabetically
カテゴリ別の C# コンパイラ オプションの一覧C# Compiler Options Listed by Category
Main() とコマンド ライン引数Main() and Command-Line Arguments
コマンド ライン引数Command-Line Arguments
方法: コマンド ライン引数を表示するHow to: Display Command-Line Arguments
方法: foreach を使用してコマンド ライン引数にアクセスするHow to: Access Command-Line Arguments Using foreach
Main() の戻り値Main() Return Values