2010-12-08 3 views
9

"ProgramFiles"변수가 사용될 때 Windows 7이 어떻게 "ProgramFiles (X86)"환경 변수로 지연되는지 알고 있습니까?Windows 7 64 비트 programfiles 환경 변수

우리는 개발자가 Visual Studio를 사용하고 proj 파일이 "$ (ProgramFiles)"를 사용하여 어셈블리를 참조하는 상황이 있습니다. 시스템은 64 비트이고 "ProgramFiles"변수는 "C : \ Program Files"를 가리 킵니다. 그러나 어셈블리는 "C : \ Program Files (X86)"에 있지만 프로젝트가 빌드됩니다. 리터럴 "C : \ Program Files"경로가 사용되면 빌드되지 않습니다. 컴파일러에서 어셈블리를 찾을 수 없다고 말합니다.

+4

한스의 답변은 정확하며 자세한 내용은 여기를 참조하십시오. http://msdn.microsoft.com/en-us/library/aa384232%28VS.85%29.aspx –

답변

6

예, Windows는 32 비트 프로그램의 경우 c:\program files에 폴더와 파일 액세스를 자동으로 매핑합니다. c:\program files (x86)입니다. Visual Studio 및 MSBuild는 32 비트 프로그램입니다. c : \ windows \ system32 vs c : \ windows \ syswow64도 마찬가지입니다.

+0

감사합니다. 그것이 내가 생각했던 거죠. – PhilBrown

+1

프로세스의 bitness에 따라 자동으로 올바른 경로를 제공하는 환경 변수 % ProgramFiles %의 사용을 제외하고는 이것이 사실이라고 생각하지 않습니다. OP의 상황이 작동하는 이유는 VS가 32 비트이고'$ (ProgramFiles)'가 환경 변수 % ProgramFiles %를 참조하기 때문입니다. 64 비트에서 32 비트 프로세스의 경우 'C : \ Program Files (x86)'가됩니다. 비트 OS. 32-bit 프로세스에서'C : \ Program Files \ Acme \ foo64.exe'에있는 64-bit exe를 실행 시키면, OS는'C : \ Program Files (x86) \ Acme \ foo64.exe'. –

관련 문제