csc.exe를 사용한 명령줄 빌드

업데이트: 2007년 11월

명령줄에 실행 파일(csc.exe)의 이름을 입력하여 C# 컴파일러를 호출할 수 있습니다. Visual Studio 명령 프롬프트(Visual Studio 도구에서 시작 메뉴의 바로 가기에 있음)를 사용하는 경우에는 필요한 모든 환경 변수가 자동으로 설정되어 있습니다. 그렇지 않은 경우 컴퓨터의 하위 디렉터리에서 csc.exe를 호출하려면 경로를 조정해야 합니다. Visual Studio 명령 프롬프트를 사용하지 않는 경우 명령줄 빌드를 지원하기 위해 vsvars32.bat를 실행하여 적절한 환경 변수를 설정해야 합니다. vsvars32.bat에 대한 자세한 내용은 방법: 환경 변수 설정을 참조하십시오.

Windows SDK(소프트웨어 개발 키트)만 있는 컴퓨터에서 작업하는 경우 Microsoft .NET Framework SDK 메뉴 옵션에서 사용할 수 있는 SDK 명령 프롬프트를 사용하면 명령줄에서 C# 컴파일러를 사용할 수 있습니다.

개발 환경에서 빌드하려면 방법: 빌드 준비 및 관리를 참조하십시오.

또한 MSBuild를 사용하여 프로그래밍 방식으로 C# 프로그램을 빌드할 수도 있습니다. 자세한 내용은 MSBuild를 참조하십시오.

csc.exe 실행 파일은 대개 시스템 디렉터리 아래의 Microsoft.NET\Framework\<version> 폴더에 있습니다. 이 위치는 개별 컴퓨터의 구성에 따라 다를 수 있습니다. 컴퓨터에 여러 버전의 .NET Framework가 설치되어 있는 경우에는 컴퓨터에 이 실행 파일의 버전이 여러 개 있을 수 있습니다. 이러한 설치에 대한 자세한 내용은 여러 버전의 .NET Framework 설치를 참조하십시오.

이 항목에서는 다음 내용에 대해 설명합니다.

명령줄 구문 규칙

샘플 명령줄

C# 컴파일러와 C++ 컴파일러 출력 간의 차이

C# 컴파일러의 명령줄 구문 규칙

C# 컴파일러에서는 운영 체제 명령줄에 지정된 인수를 해석할 때 다음 규칙이 적용됩니다.

  • 인수를 공백이나 탭으로 구분합니다.

  • 캐럿 기호(^)는 이스케이프 문자나 구분 기호로 인식되지 않습니다. 문자를 프로그램의 argv 배열에 전달하기 전에 운영 체제의 명령줄 파서에서 처리합니다.

  • 큰따옴표로 묶은 문자열("문자열")은 포함된 공백에 상관없이 하나의 인수로 해석됩니다. 따옴표로 묶은 문자열은 인수에 포함될 수 있습니다.

  • 백슬래시 다음의 큰따옴표(\")는 리터럴 큰따옴표 문자(")로 해석됩니다.

  • 백슬래시는 큰따옴표 바로 앞에 있지 않으면 리터럴로 해석됩니다.

  • 짝수 개의 백슬래시 다음에 큰따옴표가 오면 각 백슬래시 쌍마다 하나의 백슬래시가 argv 배열에 놓이고 큰따옴표는 문자열 구분 기호로 해석됩니다.

  • 홀수 개의 백슬래시 다음에 큰따옴표가 오면 각 백슬래시 쌍마다 하나의 백슬래시가 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# 컴파일러에서는 링커가 필요하지 않습니다.

참고 항목

참조

C# 컴파일러 옵션 사전순 목록

C# 컴파일러 옵션 범주별 목록

기타 리소스

C# 컴파일러 옵션