csc.exe를 사용한 명령줄 빌드Command-line build with csc.exe

명령 프롬프트에서 실행 파일(csc.exe)의 이름을 입력하여 C# 컴파일러를 호출할 수 있습니다.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 SDK(소프트웨어 개발 키트)만 있는 컴퓨터에서 작업하는 경우, Microsoft .NET Framework SDK 메뉴 옵션을 통해 여는 SDK 명령 프롬프트에서 C# 컴파일러를 사용할 수 있습니다.If you're working on a computer that has only the 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\ <Version> 폴더에 있습니다.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. 프로젝트를 다시 빌드한 후 출력 창에서 csc를 검색하여 C# 컴파일러 호출을 찾습니다.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.

  • 짝수 개의 백슬래시 다음에 큰따옴표가 오는 경우, 백슬래시 쌍마다 하나의 백슬래시가 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.

  • 홀수 개의 백슬래시 다음에 큰따옴표가 오는 경우, 백슬래시 쌍마다 하나의 백슬래시가 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
  • 최적화를 사용하여 현재 디렉터리에 있는 모든 C# 파일을 컴파일하고 DEBUG 기호를 정의합니다.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# 파일을로 컴파일합니다.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