2010-04-09 3 views
0

네이티브 DLL에 종속 된 .NET 응용 프로그램이 있습니다. AnyCPU로 .NET 응용 프로그램을 설정했습니다. 빌드 후 단계에서 일부 디렉토리 (x86 또는 AMD64)에서 올바른 기본 DLL을 복사하여 대상 경로에 배치 할 계획입니다.네이티브 DLL을 사용하는 .NET 응용 프로그램 (빌드 관리)

그러나 이것은 작동하지 않습니다. 64 비트 시스템에서 Visual Studio의 환경 변수 PROCESSOR_ARCHITECTURE는 "x86"입니다.

지금 내 대안은 프로세서 아키텍처를 출력하는 작은 도구를 만드는 것입니다. 이것은 빌드 후 단계에서 사용됩니다.

더 좋은 방법이 있습니까?

(사이드 노트 : 응용 프로그램을 배포/패키징 할 때 적절한 기본 DLL이 올바른 플랫폼에 복사되지만 이는 x86 및 AMD64 용으로 두 개의 별도 릴리스 폴더가 있음을 의미하며 이는 디바이스 드라이버 용이므로 확인 됨 이 앱은 드라이버를위한 유틸리티 도구입니다.)

답변

2

Visual Studio는 32 비트 응용 프로그램이므로 64 비트 시스템의 WoW64 계층에서 실행됩니다. PROCESSOR_ARCHITECTURE가 x86에서 "x86"을 생성하는 이유는 호환성이라고 생각됩니다. 앱이 실제로 32 비트 시스템이라고 생각해야합니다.

실제 응용 프로그램이 WoW64에서 실행되는 경우에도 AMD64가되는 PROCESSOR_ARCHITEW6432 변수의 존재 여부 및 값을 확인할 수 있습니다. 이 변수는 32 비트 Windows에는 존재하지 않으며 64 비트 Windows에서 64 비트 프로세스에 대해서도 정의되지 않았습니다.

관련 문제