2010-12-06 2 views
4

왜 Sharp 프로젝트 파일에서 obj 폴더에 x86 폴더가 존재합니까?왜 x86 폴더가 C# 프로젝트 디렉토리에 있습니까?

내 프로젝트 파일 구조는

ProjectOne
입니다 ---------- 빈
-------------- 디버그
---- ---------- 출시
---------- Obj
-------------- x86/// 이유가 무엇입니까?
------------------- 디버그
------------------- 릴리스
---- - 내 소스 파일들.

현재 내 파일이 bin \ debug가 아닌 projectOne (내 소스 파일이있는 곳)입니까?

답변

6

실행하면 현재 디렉토리는 실행 파일이있는 곳에서 기본적으로 설정되며, bin/debug 디렉토리에 있습니다.

Visual Studio에서 프로젝트를 시작할 때 실행하려는 위치를 설정할 수 있습니다 (프로젝트 속성에서 자세한 내용이 필요하면 사용중인 VS의 버전/버전을 정확하게 말하십시오).

obj 디렉토리의 내용은 거의 전체 디렉토리를 무시할 수 있습니다. Visual Studio에서 빌드 한 다음 사용하는 중간 파일로 가득 차 있지만 직접 파일을 사용할 필요가 없습니다.

+0

오 !! 당신은 현재 디렉토리가 내 exe 파일이 존재한다는 것을 의미합니다 ... 나는 projectOne dir에서 xml 파일을 사용하고 싶습니다. 2 위로 올라갈 수 있습니다 ../../xmlfile – PawanS

+2

Visual Studio의 xml 파일을 사용하면 "출력 디렉토리로 복사"를 "새 파일로 복사"로 설정할 수 있습니다. 빌드 할 때 bin/Debug 디렉토리로 복사되고 응용 프로그램을보다 쉽게 ​​배포 할 수 있습니다. – cspolton

+0

@ spolto ... 와우 !! 이 팁에 대해 고맙습니다. 어쨌든 나는 문제를 해결했지만 정말 좋은 팁을 주었다. – PawanS

0

bin 폴더에는 응용 프로그램의 바이너리 파일 (즉, 실행 파일)이 들어 있습니다. 두 개 (또는 그 이상)의 폴더로 세분화됩니다 (일반적으로 DebugRelease). 이는 빌드 구성에 해당합니다. 프로젝트가 컴파일 될 때 실행 파일은 수행 한 빌드 유형에 따라 이러한 폴더 중 하나에 배치됩니다. 개발 환경 외부에서 실행 파일을 실행하려면이 폴더 중 하나에서 찾은 ".exe"파일을 클릭하면됩니다.

원하는 경우 프로젝트의 속성 창을 사용하여 컴파일하는 동안 Visual Studio에서 실행 파일을 출력하는 위치를 변경할 수 있습니다.

obj 디렉터리에는 응용 프로그램을 컴파일 할 때 Visual Studio에서 빌드하는 중간 (또는 개체) 파일이 들어 있습니다. 걱정하지 않거나 파일을 사용할 필요가있는 것은 아닙니다.

마지막으로 원본 파일은 솔루션 탐색기 창에 표시된대로 루트 디렉터리에 보관됩니다. 이 파일의 위치는 직접 관리합니다. Visual Studio에서 관리하지 않습니다.

1

x86 폴더는 빌드 구성 관리자의 빌드 대상 플랫폼을 나타냅니다. 64 비트 OS에서 32 비트 응용 프로그램을 작성할 수 있습니다. Cody와 Jon이 obj 디렉토리를 무시할 수 있다고 말합니다.

+0

나중에 Spolto에게 감사드립니다. 나는 의심을 해소했습니다. – PawanS

0

오브젝트 파일 (Obj에 저장된 파일)은 링크되지 않은 컴파일 된 2 진 파일입니다. 실행 파일을 만들기 위해 나중에 결합되는 최종 실행 파일의 조각으로 생각하십시오.

소스 코드를 컴파일 할 때 각 소스 파일은 느슨하게 하나의 오브젝트 파일로 컴파일됩니다. 왜? 특정 컴파일러가 작성된 이유 *가 없습니다.다른 언어로는 컴파일러가 없지만 모든 것을 한 번에 하나의 큰 바이너리로 컴파일합니다. 그러나 컴파일러를 작성한 사람들은 먼저 오브젝트 파일을 분리하여 컴파일하기로 결정했습니다.

이제 각각의 소스 파일이 하나의 오브젝트 파일을 생성하면 코드를 컴파일 할 때마다 소스 디렉토리가 엉망이되어 많은 .obj 파일로 채워지는 것을 상상할 수 있습니다 (실제로 많은 C 컴파일러가 전통적으로 이것을했다). 시간이지나면서 대규모 프로젝트를 수행하는 개발자는 컴파일 스크립트를 작성하거나 프로젝트를 구성하여 모든 .obj 파일을 단일 디렉토리에 수집하여 소스 디렉토리를 덜 어둡게 만듭니다.

컴파일러를 작성한 사람들은 분명히 별도의 Obj 디렉토리에 대한 아이디어를 좋아해서 프로젝트의 기본 구성으로 만들었습니다. 컴파일러가 ARM (Android 용, Win Phone 7 및 iPhone 용)과 같은 다른 CPU를 지원하고 32 비트와 64 비트를 구별하기 때문에 x86 서브 디렉토리가있는 이유는 무엇입니까?


* 참고 : 실제로이 컴파일러의 코드를보다 모듈 제작을 포함 할 증분 컴파일하지만 의미 어떤 사람들은 별도의 OBJ 파일을 생성하지 않고 모든 것을 할 수 있다는 사실을 지원하기 위해 아주 좋은 이유가 있습니다 대부분 컴파일러 개발자가 디자인 요구 사항이라고 생각하는 것 이상입니다.

+0

실행 또는 컴파일 과정에서 오브젝트 파일이 작성된 유효한 소스를 제공 할 수 있습니까? –

+0

@VikasVerma : 저는 지금 당장 참고할만한 정보가 없지만 Google에 갈 수 있다고 생각합니다.하지만 Google에 간다면 Google에 알려줄 수도 있습니다. 모든 .obj 파일을 삭제하고 소스를 컴파일하십시오. 생성 된 것을 볼 수 있습니다. 이는 컴파일 과정에서 생성되었음을 의미합니다. – slebetman

+0

.obj 파일을보기 위해 obj 폴더를 찾았지만 컴파일 후에 .obj 관련 파일을 찾지 못했습니다. –

관련 문제