난 비주얼 스튜디오 2010에서 새 프로젝트를 생성라는 두 개의 새 폴더가 지금 있다는 것을 발견 obj
하고 bin
내 프로젝트 디렉토리입니다.
빌드 및 디버깅 할 때 비슷한 폴더 쌍이 만들어집니다. 이러한 폴더는 무엇입니까?
답변
obj
폴더는 보유 목적, 또는 중간, 파일을 아직 연결되지 않은 바이너리 파일을 컴파일된다. 그것들은 본질적으로 최종 실행 파일을 생성하기 위해 결합되는 조각입니다. 컴파일러는 각 소스 파일에 대해 하나의 객체 파일을 생성하며 해당 파일은 obj
폴더에 저장됩니다.
이 bin
폴더에는 응용 프로그램이나 라이브러리의 실제 실행 코드 인 이진 파일 이 들어 있습니다.
이러한 각 폴더는 프로젝트의 빌드 구성에 해당하는 폴더 Debug
와 Release
폴더 로 세분화됩니다 . 위에서 설명한 두 가지 유형의 파일은 수행하는 빌드 유형에 따라 적절한 폴더에 저장됩니다. 이를 통해 디버깅 기호로 빌드 된 실행 파일과 최적화가 활성화되어 릴리스 준비가 된 실행 파일을 쉽게 결정할 수 있습니다.
프로젝트 속성에서 컴파일하는 동안 Visual Studio가 실행 파일을 출력하는 위치를 변경할 수 있습니다. 빌드 구성에 대한 이름과 선택한 옵션을 변경할 수도 있습니다.
답변
C # bin과 obj 폴더 의 차이점을 보여주는이 YouTube 비디오를 보도록 권합니다. 증분 / 조건부 컴파일의 이점을 얻는 방법을 설명하는 .
C # 컴파일은 2 단계 프로세스입니다. 자세한 내용은 아래 다이어그램을 참조하십시오.
- 컴파일 단계 : 컴파일 단계에서 개별 C # 코드 파일은 개별 컴파일 단위로 컴파일됩니다. 이러한 개별 컴파일 된 코드 파일은 OBJ 디렉토리에 있습니다.
- 연결 : 연결 단계에서 이러한 개별 컴파일 된 코드 파일은 단일 단위 DLL 및 EXE를 만들기 위해 연결됩니다. 이것은 BIN 디렉토리에 들어갑니다.
bin과 obj 디렉토리를 비교하면 “bin”에 단일 단위가 있고 개별 컴파일 된 코드 파일이 있으므로 “obj”디렉토리에 더 많은 파일이 있습니다.
답변
obj
디렉토리는 빌드하는 동안 컴파일러 또는 빌드 시스템에서 생성되는 중간 오브젝트 파일 및 기타 임시 데이터 파일입니다. bin
디렉토리는 최종 출력 바이너리 (및 종속성 또는 기타 배포 파일)에 기록됩니다 디렉토리입니다.
원하는 경우 프로젝트 설정 내에서 두 가지 용도로 사용되는 실제 디렉토리를 변경할 수 있습니다.
답변
obj 디렉토리에 대한 흥미로운 사실 : 웹 프로젝트에서 공개 설정을 한 경우 공개 될 파일은 obj \ Release \ Package \ PackageTmp로 스테이징됩니다. 통합 VS 기능을 사용하지 않고 직접 파일을 게시하려는 경우 bin 디렉토리의 모든 디지털 파편을 선택하지 않고 실제로 배치해야하는 파일을 가져올 수 있습니다.
답변
setup
프로젝트를 사용하는 경우 주의하십시오 . Visual Studio 설치 프로젝트 Primary Output
는 obj
폴더가 아닌 폴더 에서 가져옵니다 .bin
.
폴더 어셈블리 msi
에서 빌드 후 절차를 수행 할 때 배포 된 응용 프로그램 파일이 실제로 난독 처리되지 않았거나 서명되지 않았으며 bin
폴더를 대상으로 obj
지정 해야한다는 사실을 발견하기 전에 오랫동안 난독 처리 및 설정에 서명 한 것으로 생각되는 응용 프로그램을 릴리스 했습니다. 대신 어셈블리.
이것은 직관적 인 imho와는 거리가 멀지 만 일반적인 setup
접근 방식은 Primary Output
프로젝트 를 사용하는 것이며 obj
폴더입니다. 누군가 가이 btw에 약간의 빛을 비출 수 있다면 그것을 좋아합니다.