SW개발

[C# 기초강좌] 4. 명령줄 빌드

박종명 2023. 11. 1. 08:26
728x90
이 글은 제가 과거에 운영했던 사이트인 http://dotnet.mkexdev.net 의 글을 옮겨온 것입니다. 원본 글은 2010년에 작성되었습니다.

그 전에 운영했었던 사이트(mkex.pe.kr)은 흔적도 없이 사라 졌습니다. 그속의 글들도 모두... 그래서 이 사이트도 사라지기 전에 옮기고 싶은 글을 조금씩 이 블로그로 이동시키려 합니다.
(원본글) http://dotnet.mkexdev.net/Article/Content.aspx?parentCategoryID=1&categoryID=5&ID=668

이 글은 닷넷 기초 지식을 전파하기 위해 2010경에 작성되었으며, 당시 윤성우의 프로그래밍 스터디그룹 네이버 카페에도 필진으로 참여하여 연재했던 글이기도 합니다. 현재 시점에서 조금 달라진 부분이 있을 수 있으나 기본 원리와 언어 기초에 해당하는 부분은 크게 변하지 않았을 것으로 생각하며 이런 부분들을 감안해서 봐 주시기 바랍니다.

 

“C#컴파일러는 csc.exe 입니다

안녕하세요. 박종명입니다. 닷넷 네 번째 강좌를 진행하도록 하겠습니다.
이번 주제는 닷넷 코드를 명령줄로 컴파일하고 실행하는 방법에 대해 알아봅니다

보통 자동완성기능이나 기본 코드 제공이 전혀 없는 환경에서 개발하는 것을 일명 날코딩 이라고 합니다.
이와 유사한 개념으로 Visual Studio 의 도움 없이 명령(Command) 창에서 직접 컴파일러를 명시하고 실행하는 것을 저는 날컴파일이라 부르고 싶군요 ^^;


지난 시간에 .NET Framework  Visual Studio 2008 Express를 설치해 보았습니다

이번 시간에는 명령프롬프트’(cmd.exe)를 사용해서 닷넷 코드를 직접 컴파일하고 실행하는 것에 대해 알아볼 텐데요…… 사실 Visual Studio 로 개발할 경우 컴파일러와 런타임의 위치를 모른다고 해도 알아서 컴파일하고 실행해 줍니다.  IDE툴을 사용하는 경우 필요한 모든 환경 변수가 자동으로 설정되기 때문에 개발자가 일일이 경로(Path) 설정을 해 줄 필요가 없죠.

닷넷부터 시작한 많은 개발자가 환경변수를 모르고(?) 있는 까닭이기도 합니다 ^^;
어쨌든 저희는 닷넷 실행을 위한 환경변수를 직접 설정하고 코드를 실행하는 과정을 간략하게나마 살펴 보도록 하겠습니다

날컴파일(?) 해보기

1) 환경 변수 설정

이 카페의 회원 분들은 모두 환경변수 설정을 해 보았을 것으로 판단되는데요.
내컴퓨터 속성 -> 고급 -> 환경변수 -> 시스템변수 -> Path’ 에 해당 경로를 지정합니다

이전 강좌에 설명한대로 .NET Framework 3.5를 설치하셨다면 경로는 아래와 같습니다

Path = C:\WINDOWS\Microsoft.NET\Framework\v3.5

 

2) 코드 작성

간단한 C# 코드를 메모장에서 아래와 같이 작성합니다

class Program
{
    static void  Main()
    {
        System.Console.WriteLine("Hello World!");
    }
}

그리고 hello.cs 라는 파일명으로 저장합니다

 

3) 명령줄 컴파일 및 실행

닷넷은 언어별 컴파일러가 별도로 존재합니다. 저희는 C#컴파일러인 csc.exe를 사용합니다.
csc.exe  Path로 잡은 경로인 C:\WINDOWS\Microsoft.NET\Framework\v3.5 폴더에 위치하고 있습니다

 윈도우의 cmd.exe를 실행하고 아래와 같이 컴파일 합니다

>> csc.exe hello.cs

이렇게 컴파일 hello.exe라는 IL코드가 정의된 어셈블리가 생성됩니다

이제 이 hello.exe를 아래의 명령어로 실행합니다

>> hello.exe (exe는 생략 가능합니다)

 

SDK 명령 프롬프트

.NET Framework 2.0부터 제공되는 명령 프롬프트인데요, 아래의 메뉴에 있습니다

시작 -> 프로그램 -> Microsoft .NET Framework SDK v2.0’ 

SDK 명령프롬프트를 사용하면 실행될 때 닷넷을 위한 각종 환경변수 설정을 자동으로 해주기 때문에 개발자가 일일이 Path를 지정해 주지 않아도 됩니다

SDK 명령 프롬프트 역시 윈도우가 제공하는 기본 명령프롬프트인 cmd.exe 가 실행되는 것인데요..

다만 내부적으로 sdkvars.bat 라는 배치파일의 명령을 수행하면서 cmd.exe 를 실행하는 것과 같습니다

sdkvars.bat 파일은 각종 환경변수를 설정하면 명령어 집합입니다.
이 파일은 C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin 폴더에 있습니다.

Visual Studio 명령 프롬프트

Visual Studio 2008 정품을 설치하면 Visual Studio 2008 명령프롬프트가 제공됩니다. 
이 프롬프트 역시 자동으로 환경변수를 설정해 줍니다

앞서 와 같이 cmd.exe를 실행하는 것으로, vsvars32.bat 파일을 내부적으로 수행하게 됩니다

vsvars32.bat  C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools 에 위치한 각종 환경변수 설정을 위한 명령어 집합입니다

이렇게 도구적으로 지원되는 명령프롬프트는 자동으로 관련 환경변수를 설정하게 되는데요

이 설정은 시스템 전역적이지는 않습니다. 즉 프롬프트가 실행된 세션에서만 환경변수가 유효하게 됩니다.

 

이제 모든 걸 잊어 주세요?

지금까지 날 컴파일 하는 방법과 닷넷 도구로 지원되는 명령프롬프트에 대해 알아보았습니다. 그런데 어찌 보면 이러한 내용들은 당장 샘플을 짜고 실행하고 공부하는 데에는 중요치 않을 수 있습니다. 왜냐하면 Visual Studio를 통해 개발하고 컴파일하고 실행하면 내부적으로 모든 게 자동으로 이루어 지기 때문입니다.

 

그러나 알아서 나쁠 것도 없습니다. 언젠가는 이와 같은 가볍지만, 세세한 지식이 도움이 될 날이 있을 것입니다. 지금 당장은 아니더라도……

 

참고로 컴파일러인 csc.exe는 컴파일을 위한 다양한 옵션들을 제공합니다이 옵션들을 한번쯤 학습하는 것을 권장 드립니다. 필요하다면 강좌를 통해 다룰 수도 있습니다만

빠른 진도(?)를 위해 생략할까 합니다

 

수고하셨습니다. 남은 하루 즐겁게 보내세요~