이 문제를 해결할 수있는 방법은 여러 가지가 있습니다. 첫 번째 것은 가장 간단합니다. 실제로 앱이 일 경우은 대상 아키텍처에 종속됩니다. 그리고 AnyCPU는 적절한 설정이 아닙니다. 매우 x64에서 얻을 수있는 거대한 가상 주소 메모리 공간을 필요로하는 경우는 드뭅니다. 특히 x86에서 작동하도록 만들고 싶기 때문에 필요합니다. 그래서 EXE의 Platform target을 x86으로 설정하면 완료됩니다.
둘째로 이것은 배포 문제 일뿐입니다. 64 비트 운영 체제에 응용 프로그램을 설치할 때 혼합 모드 어셈블리의 x64 빌드를 복사하면됩니다. x86 빌드는 32 비트 운영 체제에 설치됩니다. 이를 처리하는 설치 프로젝트를 만들어야합니다. 가장 간단한 방법은 두 가지를 만드는 것입니다. 또한 afaik 유일한 방법.
제 3의 것은 당신이 틀림없이 묻고있는 어느 쪽이든 작동하는 곳에 종과 하나입니다. 이를 위해서는 코드, 프로젝트 및 설치 프로그램을 변경해야합니다. "x86"및 "x64"와 같은 이름의 두 개의 하위 디렉토리를 만드는 빌드 후 이벤트를 작성해야합니다. 그리고 각각의 DLL 버전을 복사하십시오. 이렇게하면 CLR에서 이러한 어셈블리를 찾을 수 없습니다.
코드에서 AppDomain.CurrentDomain.AssemblyResolve 이벤트에 대한 이벤트 처리기를 작성해야합니다. 어셈블리의 모든 유형을 사용하기 전에 Main() 메소드에서이를 구독하십시오. 이벤트 처리기는 Assembly.LoadFrom()을 사용하여 IntPtr.Size 값을 기반으로 하위 어셈블리에서 올바른 어셈블리를로드해야합니다. 64 비트 모드로 실행하면 8입니다.
나는 또 다른 접근법을 언급해야하지만 일반적으로 그렇게 눈살을 찌푸리게됩니다. 두 어셈블리를 모두 GAC에 설치하십시오. 모든 것이 자동입니다.
매니페스트 파일을 편집하여이 작업을 수행 할 수 있다고 생각합니다. 이 작업을 수행하는 UI가 기억납니다. http://msdn.microsoft.com/en-us/library/xhctdw55.aspx하지만 정확히 무엇을해야하는지 기억하지 않습니다. –