Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 bin 폴더와 obj 폴더란 무엇일까요?

C# 빌드 시 생성되는 bin과 obj 폴더의 역할

C#으로 코드를 작성하고 솔루션을 빌드하거나 실행하면 항상 두 개의 폴더가 자동으로 생성됩니다.

  • bin
  • obj

이 두 폴더에는 모두 컴파일된 코드가 저장됩니다. 그렇다면 왜 굳이 폴더를 두 개로 나누어 관리하는 걸까요?

폴더가 두 개인 이유: 컴파일은 두 단계로 진행됩니다

그 이유는 C#의 컴파일 과정이 다음과 같은 두 단계로 나뉘어 진행되기 때문입니다.

  • 컴파일(Compiling)
  • 링크(Linking)

컴파일 단계에서는 개별 소스 파일 각각이 독립적인 단위로 따로 컴파일됩니다. 이렇게 만들어진 컴파일된 파일들은 이후 하나의 단위로 링크되어 최종적으로 DLL 또는 EXE 형태의 실행 가능한 결과물이 됩니다.

여기서 중요한 점은 각 단계의 결과물이 서로 다른 폴더에 저장된다는 것입니다.

  • obj 폴더: 컴파일 단계에서 생성된 중간 결과물이 저장됩니다.
  • bin 폴더: 최종 컴파일 단계, 즉 링크 단계의 결과물이 저장됩니다.

obj 폴더의 실제 활용: 증분 컴파일

obj 폴더는 조건부 컴파일(Conditional Compilation)이나 증분 컴파일(Incremental Compilation)에 활용됩니다.

예를 들어, 여러 솔루션과 수많은 파일로 구성된 대규모 프로젝트가 있다고 가정해 보겠습니다. 이 상태에서 파일 하나만 수정한 뒤 솔루션을 빌드하면, 전체 프로젝트를 다시 컴파일하지 않고 해당 파일만 다시 컴파일합니다. 이때 어떤 파일이 이미 컴파일되었는지 판단하는 데 필요한 정보가 바로 obj 폴더에 저장되어 있는 것입니다.

덕분에 obj 폴더는 빌드 속도를 크게 향상시키는 역할을 하며, bin 폴더와 함께 C# 프로젝트의 효율적인 빌드 프로세스를 뒷받침합니다.