본문 바로가기

진리는어디에/C#

[C#] 커맨드 라인으로 C# 빌드

Visual Studio에서 C#을 빌드하게 되면 주로 IDE를 통해 빌드 하게 된다(Ctrl + F5). 하지만 젠킨스와 같은 다른 빌드 도구들을 이용하려면 커맨드라인 명령어로 빌드하는 것이 여러모로 편하다.

이번 장에서는 커맨드 라인으로 C#을 빌드하는 방법에 대해 살펴 보도록 하겠다.

C# 컴파일러 - csc.exe

커맨드 라인으로 C#을 빌드하기 위해서는 csc.exe를 이용해야 한다. csc.exe는 C#을 개발하기 위해 비주얼 스튜디오를 설치하였다면 C:\Windows\Microsoft.NET\Framework64\v4.0.30319 위치에 자동으로 설치가 되어 있을 것이다.

또는 'Native Tools Command Prompt'를 실행하면 된다. 윈도우 실행창에서 'Native Tools Command Prompt'를 검색하면  64bit용, 32bit용 중 원하는 환경에서의 커맨드 프롬프트를 실행 할 수 있다.

  • 샘플 코드
// 파일 : Program.cs 
// 설명 : 단순 테스트 용도 Hello World 출력
using System;

class Program
{
    static void Main(string[] args)
    {
        System.Console.WriteLine("hello world");
    }
}
  • 컴파일 명령어
PS D:\helloworld_cs> C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe .\Program.cs
Microsoft (R) Visual C# Compiler version 4.8.4084.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.

This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to C# 5, which is no longer the latest version. For compilers that support newer versions of the C# programming language, see http://go.microsoft.com/fwlink/?LinkID=533240

PS D:\helloworld_cs> .\Program.exe
hello world

위와 같이 컴파일하면 Program.exe 파일이 생성되어 정상적으로 실행 할 수 있는 것을 확인 할 수 있다. csc.exe의 경로를 매번 길게 적기 귀찮다면 환경 변수에 등록해두는 방법도 있다.

만일 여러개의 소스 코드를 같이 컴파일 해야하는 경우에는 아래와 같이 컴파일할 모든 소스 코드의 이름을 나열해주면 된다.

> csc.exe .\Program.cs SourceCode1.cs SourceCode2.cs

이 경우 주의할 것은 컴파일 되는 .exe실행 파일의 이름이 가장 먼저 작성된 파일의 이름으로 명명 된다는 것이다. 다른 이름으로 .exe 파일을 생성하고 싶다면 다음과 같이 /out: 커맨드 라인 스위치를 사용하면 된다.

> csc.exe /out:SourceCode1.exe Program.cs SourceCode1.cs SourceCode2.cs

소스 코드가 여러개로 나뉠 때 또 한가지 주의할 것은 컴파일러가 프로그램의 실행을 시작할 위치를 지정해주어야 한다는 것이다. 클래스 중 Main() 메쏘드를 정의한 클래스가 하나 밖에 없다면 문제가 되지 않는다. 하지만 여러 소스 코드에 나뉘어져 있는 클래스가 각각 Main() 메쏘드를 정의하고 있다면 컴파일러는 어느 Main() 메쏘드를 실행해야 할지 알 수 없다. 이 문제는 /main: 스위치를 적용함으로써 해결 할 수 있다. /main: 스위치는 Main 메소드를 사용 할 클래스를 정의 한다.

> csc.exe /main:Program Program.cs SourceCode1.cs SourceCode2.cs

빌드 옵션

커맨드 라인으로 컴파일을 하게 되면 여러가지 빌드 옵션을 줄 수 있다. 아래는 대표적인 빌드 옵션이다.

dll 빌드

> csc program.cs /target:library

컴파일 시 dll 참조

프로그램을 컴파일하기 위해서는 선언된 네임스페이스를 지원하는 dll 파일들을 모두 참조해야 한다. dll을 참조하는 방법은 아래와 같이 csc 컴파일러에 /resource 커맨드 라인 스위치를 적용한다(/resource는 /r로 축약 할 수 있다).

> csc /r:System.dll Program.cs

우리가 C# 프로그램을 작성할 때 기본적으로 사용하는 System 네임스페이스에 대한 클래스는 System.dll 파일에 포함 되어 있으므로 프로그램을 성공적으로 컴파일 하기 위해서는 커맨드 라인에서 System.dll을 참조해야 한다. 물론, 일반적으로 컴파일 할 때 이런 스위치를 적용할 필요가 없었다. 이유는 csc.exe 컴파일러는 기본적인 dll 파일들을 포함해서 몇개의 표준 커맨드라인 파라미터를 설정하는 설정 파일이 있다. csc.rsp라 불리는 이 설정 파일은 csc.exe 파일과 동일한 디렉토리에 위치하여 기본적으로 필요한 dll을을 함께 포함한다.

빌드 시 실행 파일 이름 지정

기본적으로 컴파일 대상 파일 이름이 실행 파일 이름이 되지만 /out 옵션을 이용해 직접 실행 파일의 이름을 지정 할 수 있다.

> csc program.cs /out:실행파일이름.exe

 

이상 C# 커맨드 라인 컴파일 방법에 대해 알아 보았다.

유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!