관리 메뉴

심재운 블로그

C# 컴파일러 사용하는 방법 본문

닷넷관련/CSharp

C# 컴파일러 사용하는 방법

재우니 2009. 2. 12. 00:09


.NET SDK 에는 C#컴파일러인 CSC.EXE는 명령 프롬프트에서 사용할 수 있습니다. 
또한 VS.NET 가 설치되어 있으시면 IDE 환경에서 컴파일 할 수 있죠.

컴파일러의 작동은 명령 라인 인수에 따라 제어가 됩니다. VS.NET 은 IDE 를 통해 컴파일할려고 하면 IDE 는 자신의 설정 사항을 알아서 살펴보고 동적으로 명령 라인 인수와 함께 명령 문자열을 만듭니다. 그리고 문자열을 사용하여 csc.exe 프로세서를 실행시키죠. vs.net 과 같은 IDE 를 사용하면 시간을 절약해 주겠지만, 명령프롬프트 옵션을 통해서도 빌드 과정은 스크립트, 배치파일등을 사용하여 자동화될 수 있죠.

다시 말씀드리면 c#컴파일러는 기계어 코드를 생성하지 않고 오직 IL인 중간언어로 컴파일됩니다. IL 인 중간언어를 기계어 코드로 번역하는 것은 닷넷런타임이 하는 것이죠.


c# 컴파일러 명령 프롬프트에서 사용할때 소스 파일의 이름을 컴파일러 csc 다음에 기재해 주시면 됩니다.

csc /out:TargetFile.exe SourceFile.cs



SourceFile.cs 파일이 c# 원본 파일입니다. 컴파일을 TargetFile.exe로
파일의 이름을 명시할 수도 있답니다.


/target 옵션을 통해 c# 컴파일러가 어떤 종류의 프로젝트를 빌드해야 하는지 명시해 줄 수 있답니다.

1) /target:exe 인수를 설정하면 c#컴파일러는 콘솔응용프로그램을 생성
2) /target:winexe 인수를 설정하면 Windows 폼 응용프로그램을 생성
3) /target:library 인수를 설정하면 매니페스트를 포함하는 단독 어셈블리를 생성합니다.
4) /target:module 인수를 설정하면 매니퍼스트가 없는 어셈블리 파일을 생성합니다.

/target 을 줄여서 /t로 쓸 수 있답니다.


c# 파일을 아래와 같이 코딩해 보고, .NET DLL 로 컴파일을 해보죠.

==== Example1 ===

//Csharp.cs
namespace Csharp.Zoa.To
{
    public class Math
   {
         public int Add(int x, int y)
         {
              return x + y;
         }
   }
}


컴파일 하는 방법을 보죠. 참고로 위의 소스는 Main() 메소드가 없습니다. 이런것들은 라이브러리로 만듭니다. 참조용으로 함수들을 따로 빼서 만들어서 사용하기 때문이죠.


c:\>csc /t:library Math.cs

해당 위의 명령어를 실행하게 되면 해당 폴더에 Math.dll 파일이 생성됩니다. ^^; 이는 라이브러리 파일이므로 실행하지 못합니다. 이제 라이브러리 안에 있는 함수를 호출하기 위해서 Main() 메소드가 존재하는 소스를 구현해 보죠.

먼저 객체를 인스턴스화 해서 Math.dll 안에 존재하는 Add() 메소드를 호출하고 결과를 얻어보죠. 이는 public 접근자로 되어 있어서 접근이 가능한겁니다. private 접근자는 외부에서 참조가 불가능합니다.

======= example2 ====

using System;

namespace Csharp.Zoa.To
{
     class Client
     {
         public static int Main()
        {
                Math math = new Math();
                Console.WriteLine(math.Add(5,6));
                return 0;
        }
     }
}


example1에 새롭게 컴파일된 dll 파일에  Math.dll 을 참조하기 위해서 /r 스위치를 이용하여 컴파일을 합니다.

c:\>csc Clinet.cs /r:Math.dll



posted by 심재운 (shimpark@gmail.com)

6 Comments
  • 프로필사진 괴물왕녀 2010.03.31 21:17 예제 1번의 //Csharp.cs 는 메모장이름을 이렇게 하란건가요? 아님 소스에 그대로 적어넣는건가요?
    그리고 예제 1번의 네임스페이스 뒤에 Charp.Zoa.To 인지 Csharp 인지;ㅠㅠ 제가 프로그래밍 종류는 첫도전인데.. C#을 처음으로 배워보려고 하는데.. 컴퓨터공부는 워드1급, 정보처리 기능사가 끝이고 나머지는 배운적도없어서; C#을 배우려니 어렵네요..ㅠ 좀더 쉽게설명되있으면 좋겠지만.. 제가 실력이 좀더 있었다면 이해하기 쉬웠을텐데..ㅠ
  • 프로필사진 Favicon of https://aspdotnet.tistory.com BlogIcon 재우니 2010.04.06 21:25 신고 어이쿠..죄송합니다. Csharp.Zoa.To 로 네임스페이스를 변경했습니다.
  • 프로필사진 Favicon of http://www.cyworld.com/konsanchi BlogIcon cosmicBird 2010.04.20 11:10 정말 가뭄에 단비같은 강좌이십니다. ㅠㅠ
    잘보고 갑니다!
    정말 필요한 강좌는 올려주신 라이선스에 따라서 퍼가도록 하겠습니다. 감사합니다! ㅠㅠ
  • 프로필사진 Favicon of https://aspdotnet.tistory.com BlogIcon 재우니 2010.04.28 13:05 신고 네..^^ 사이트, 이름만 명시하면 어디서든 퍼갈 수 있습니다. 가공해도 상관없습니다.
  • 프로필사진 Favicon of http://www.bagsclearancesale.com/chloe-shoes-clearance-sale-cb1852.html BlogIcon chloe shoes on sale 2012.08.25 17:48 이 사이트 는 자체 의 매력 을 고 쳐 지지 않 고 좋 은 글씨 의 미래 사이트 이든 괜 찮 은, 난 아주 좋아 사이트 를 좋아해요 내 옷 만큼 소 중 한 친구 라고 생각 했 는 이미 다른 일 이 다르다 는 선량 하 고 는 친 한 돈 의 규모 가 오세요!

  • 프로필사진 Favicon of http://www.bagsclearancesale.com/chloe-shoes-clearance-sale-cb1852.html BlogIcon chloe shoes on sale 2012.08.25 17:48 이 사이트 는 자체 의 매력 을 고 쳐 지지 않 고 좋 은 글씨 의 미래 사이트 이든 괜 찮 은, 난 아주 좋아 사이트 를 좋아해요 내 옷 만큼 소 중 한 친구 라고 생각 했 는 이미 다른 일 이 다르다 는 선량 하 고 는 친 한 돈 의 규모 가 오세요!

댓글쓰기 폼