컴파일러가 필요할 때 64 비트 용으로 컴파일하는 방법을 자동으로 알 수있는 방법이 확실하지 않습니다. 자신있게 32 비트를 대상으로 할 수있는시기를 어떻게 알 수 있습니까?
컴파일러가 컴파일 할 때 어떤 아키텍처를 대상으로하는지 아는 방법이 궁금합니다. 코드를 분석하고 찾은 내용에 따라 결정을 내립니까?
컴파일러가 필요할 때 64 비트 용으로 컴파일하는 방법을 자동으로 알 수있는 방법이 확실하지 않습니다. 자신있게 32 비트를 대상으로 할 수있는시기를 어떻게 알 수 있습니까?
컴파일러가 컴파일 할 때 어떤 아키텍처를 대상으로하는지 아는 방법이 궁금합니다. 코드를 분석하고 찾은 내용에 따라 결정을 내립니까?
답변:
Microsoft는 AnyCPU가 실제로 .NET 4.5 및 Visual Studio 11에서 의미 하는 블로그 항목을 가지고 있습니다 .
.NET 4.5 및 Visual Studio 11에서 치즈가 이동되었습니다. 대부분의 .NET 프로젝트의 기본값은 다시 AnyCPU이지만 AnyCPU에는 두 가지 이상의 의미가 있습니다. AnyCPU의 추가 하위 유형 인“모든 CPU 32 비트 기본 설정”이 새로운 기본값입니다 (전체적으로 / platform C # 컴파일러 스위치에는 5 가지 옵션이 있습니다 : x86, Itanium, x64, anycpu 및 anycpu32bitpreferred). ). AnyCPU의 "32 비트 선호"플레이버를 사용할 때의 의미는 다음과 같습니다.
- 프로세스가 32 비트 Windows 시스템에서 실행되는 경우 32 비트 프로세스로 실행됩니다. IL은 x86 기계 코드로 컴파일됩니다.
- 프로세스가 64 비트 Windows 시스템에서 실행되면 32 비트 프로세스로 실행됩니다. IL은 x86 기계 코드로 컴파일됩니다.
- 프로세스가 ARM Windows 시스템에서 실행되면 32 비트 프로세스로 실행됩니다. IL은 ARM 기계 코드로 컴파일됩니다.
"모든 CPU 32 비트 기본 설정"과 "x86"의 차이점은 이것뿐입니다. x86으로 컴파일 된 .NET 응용 프로그램은 ARM Windows 시스템에서 실행되지 않지만 "모든 CPU 32 비트 기본 설정"응용 프로그램은 실행되지 않습니다. 성공적으로 실행됩니다.
Project -> Properties -> Build tab -> Platform target
있지만 .... AnyCPU-32bitPreferred
.Net 버전 4.5 이상에서만 사용할 수 있습니다. 그래서 기본값은 AnyCPU
입니다.
그 이유는 64 비트 응용 프로그램에서 더 많은 메모리를 사용하지 않으려는 경우입니다. 즉, 애플리케이션이 AnyCPU 인 경우 32 비트로 실행하려고합니다.
더 추가하기 위해 Visual Studio의 설정은 특정 CLR을 대상으로합니다.
Visual Studio는 x86 컴퓨터에 32 비트 버전의 CLR과 64 비트 Windows 컴퓨터에 32 비트 버전 및 해당 64 비트 버전의 CLR을 모두 설치합니다. Visual Studio는 32 비트 응용 프로그램이므로 64 비트 시스템에 설치하면 WOW64에서 실행됩니다.
64 비트 응용 프로그램 ( MSDN ) 문서를 참조하십시오 .