2010-08-03 2 views
2

x86 및 x64 운영 체제 모두에 레거시 C++ 코드의 .NET 래퍼를 사용하는 AnyCPU처럼 대상 플랫폼으로 컴파일 된 단일 응용 프로그램을 배포하는 문제에 대한 솔루션이 있습니까? 모든 경우에 대상 플랫폼으로 컴파일 된 두 개의 응용 프로그램 실행 파일을 x86으로 제공하고 다른 플랫폼에서 x86 랩퍼 및 x64 래퍼를 참조하는 x64를 제공해야합니까?동일한 AnyCPU 응용 프로그램에서 두 래퍼 (x86 및 x64)를 사용할 수 있습니까?

감사합니다.

답변

1

나는 런타임에 적절한 DLL이 사용되도록 (32 비트 OS에서 x86 dll을 사용하는 등) OS를 테스트하고 DLL을 돌아 다니는 런처 앱을 사용합니다. 런처의 논리는 매우 간단합니다. 뭔가 같은 : 물론

If IntPtr.Size = 8 Then 
    '-- Copy x64 DLLs into position 
Else 
    '-- Copy x86 DLLs into position 
End If 

, 복사, 당신은 항상 (휴대용 애플리케이션의 경우) x64 및 86 사이를 전환 할 수 있도록 다시 복사해야 할 때. 그러나 이식성이없는 응용 프로그램을 설치하는 경우 설치 관리자에서이 OS 검사를 모두 수행 할 수 있으므로 실행 프로그램이 필요하지 않습니다. 따라서 적절한 DLL 만 설치됩니다. Visual Studio 설치 프로젝트에서는 x64 및 x86 구성 요소를 하나의 설치 관리자에 혼합 할 수 없기 때문에이 작업을 허용하지 않지만 InstallShield에서는 허용합니다 (사용중인 작업).

프로젝트 파일을 편집하여 문제의 DLL이 아닌 특정 버전을 사용해야합니다 (그렇지 않으면이 이동 및 조건부 설치 논리로 원하는대로 수행 할 수 없습니다).

관련 문제