[visual-studio] Visual Studio에서 만든 obj 및 bin 폴더는 무엇에 사용됩니까?

난 비주얼 스튜디오 2010에서 새 프로젝트를 생성라는 두 개의 새 폴더가 지금 있다는 것을 발견 obj하고 bin내 프로젝트 디렉토리입니다.

빌드 및 디버깅 할 때 비슷한 폴더 쌍이 만들어집니다. 이러한 폴더는 무엇입니까?



답변

obj폴더는 보유 목적, 또는 중간, 파일을 아직 연결되지 않은 바이너리 파일을 컴파일된다. 그것들은 본질적으로 최종 실행 파일을 생성하기 위해 결합되는 조각입니다. 컴파일러는 각 소스 파일에 대해 하나의 객체 파일을 생성하며 해당 파일은 obj폴더에 저장됩니다.

bin폴더에는 응용 프로그램이나 라이브러리의 실제 실행 코드 인 이진 파일 이 들어 있습니다.

이러한 각 폴더는 프로젝트의 빌드 구성에 해당하는 폴더 DebugRelease폴더 로 세분화됩니다 . 위에서 설명한 두 가지 유형의 파일은 수행하는 빌드 유형에 따라 적절한 폴더에 저장됩니다. 이를 통해 디버깅 기호로 빌드 된 실행 파일과 최적화가 활성화되어 릴리스 준비가 된 실행 파일을 쉽게 결정할 수 있습니다.

프로젝트 속성에서 컴파일하는 동안 Visual Studio가 실행 파일을 출력하는 위치를 변경할 수 있습니다. 빌드 구성에 대한 이름과 선택한 옵션을 변경할 수도 있습니다.


답변

C # bin과 obj 폴더 의 차이점을 보여주는이 YouTube 비디오를 보도록 권합니다. 증분 / 조건부 컴파일의 이점을 얻는 방법을 설명하는 .

C # 컴파일은 2 단계 프로세스입니다. 자세한 내용은 아래 다이어그램을 참조하십시오.

  1. 컴파일 단계 : 컴파일 단계에서 개별 C # 코드 파일은 개별 컴파일 단위로 컴파일됩니다. 이러한 개별 컴파일 된 코드 파일은 OBJ 디렉토리에 있습니다.
  2. 연결 : 연결 단계에서 이러한 개별 컴파일 된 코드 파일은 단일 단위 DLL 및 EXE를 만들기 위해 연결됩니다. 이것은 BIN 디렉토리에 들어갑니다.

C # bin과 obj 폴더

bin과 obj 디렉토리를 비교하면 “bin”에 단일 단위가 있고 개별 컴파일 된 코드 파일이 있으므로 “obj”디렉토리에 더 많은 파일이 있습니다.

빈 대 obj


답변

obj디렉토리는 빌드하는 동안 컴파일러 또는 빌드 시스템에서 생성되는 중간 오브젝트 파일 및 기타 임시 데이터 파일입니다. bin디렉토리는 최종 출력 바이너리 (및 종속성 또는 기타 배포 파일)에 기록됩니다 디렉토리입니다.

원하는 경우 프로젝트 설정 내에서 두 가지 용도로 사용되는 실제 디렉토리를 변경할 수 있습니다.


답변

obj 디렉토리에 대한 흥미로운 사실 ​​: 웹 프로젝트에서 공개 설정을 한 경우 공개 될 파일은 obj \ Release \ Package \ PackageTmp로 스테이징됩니다. 통합 VS 기능을 사용하지 않고 직접 파일을 게시하려는 경우 bin 디렉토리의 모든 디지털 파편을 선택하지 않고 실제로 배치해야하는 파일을 가져올 수 있습니다.


답변

setup프로젝트를 사용하는 경우 주의하십시오 . Visual Studio 설치 프로젝트 Primary Outputobj폴더가 아닌 폴더 에서 가져옵니다 .bin .

폴더 어셈블리 msi에서 빌드 후 절차를 수행 할 때 배포 된 응용 프로그램 파일이 실제로 난독 처리되지 않았거나 서명되지 않았으며 bin폴더를 대상으로 obj지정 해야한다는 사실을 발견하기 전에 오랫동안 난독 처리 및 설정에 서명 한 것으로 생각되는 응용 프로그램을 릴리스 했습니다. 대신 어셈블리.

이것은 직관적 인 imho와는 거리가 멀지 만 일반적인 setup접근 방식은 Primary Output프로젝트 를 사용하는 것이며 obj폴더입니다. 누군가 가이 btw에 약간의 빛을 비출 수 있다면 그것을 좋아합니다.


답변