.NET에서 '플랫폼 대상 : 모든 CPU'컴파일러 옵션을 사용하면 .NET 어셈블리가 x64 컴퓨터에서 64 비트로 실행될 수 있고 32 비트가 켜짐 x86 컴퓨터. 'Platform Target : x86'컴파일러 옵션을 사용하여 x64 컴퓨터에서 x86으로 어셈블리를 실행하도록 할 수도 있습니다.'모든 CPU'.NET 어셈블리에서 x86 CLR 강제 수행
'Any CPU'플래그를 사용하여 어셈블리를 실행할 수 있지만 x86 또는 x64 CLR에서 실행해야하는지 여부를 결정할 수 있습니까? 일반적으로이 결정은 기본 시스템의 bitness를 기반으로 CLR/OS 로더에 의해 결정됩니다 (필자의 이해대로).
다른 실행중인 프로세스와 상호 작용할 수있는 (읽기 : 코드 삽입) C# .NET 응용 프로그램을 작성하려고합니다. x64 프로세스는 다른 x64 프로세스에만 삽입 할 수 있고 x86 프로세스는 x86과 동일하게 삽입 할 수 있습니다. 이상적으로는 JIT 컴파일과 모든 CPU 옵션을 사용하여 하나의 응용 프로그램을 x64 또는 x86 프로세스 (x64 시스템)에 주입하는 데 사용할 수 있습니다.
아이디어는 응용 프로그램이 모든 CPU으로 컴파일된다는 것입니다. x64 컴퓨터에서는 x64로 실행됩니다. 대상 프로세스가 x86 인 경우 자체 프로세스를 다시 시작해야하므로 CLR에서 x86 프로세스로 실행해야합니다. 이것이 가능한가?
예 저는 x86 런처 어셈블리에서이를 감싸서 강제로 사용할 수 있다는 것을 알고 있습니다.하지만 '모든 CPU'컴파일 된 어셈블리에 대해 동적으로 강제 할 수 있는지 궁금합니다. 어쨌든 고마워, 내가 다른 것을 찾을 수 없으면 아마 이것으로 되돌아 갈거야. upvote하지만 충분하지 않은 담당자. – jeffora
프로세스는 64 비트 또는 32 비트입니다. 어셈블리가 32 비트 프로세스에서로드되고 모든 CPU로 빌드 된 경우 64 비트 프로세스에서 64 비트로 JITed 될 32 비트로 JITed됩니다. 어셈블리를 호스트하는 어셈블리를 어떻게 계획합니까? – jnoss