prosource

C# ODP.NET 파일 또는 어셈블리 로드

probook 2023. 10. 10. 20:37
반응형

C# ODP.NET 파일 또는 어셈블리 로드

최근 ODP를 사용하는 C#(4.0) 앱에서 테스트를 시작했습니다.NET(오라클).Data Access 4.112.3)

저는 이 프로젝트를 모든 플랫폼을 대상으로 하고 앱을 게시하도록 설정했습니다.

클라이언트 컴퓨터에서 프로그램을 실행하면 다음을 받습니다.

Could not load file or assembly 'Oracle.DataAccess, Version=4.112.3.0,Culture=neutral,
PublicKeyToken=89b483f429c47342' or one of its dependencies. An attempt was made to load 
a program with an incorrect format.

제가 말한 것처럼 '아무 CPU나'를 목표로 삼았고 오라클도 내장했습니다.앱으로 데이터 액세스 어셈블리.
Oracle 클라이언트가 설치된 시스템과 설치되지 않은 시스템에서 이 오류가 발생합니다.

어떤 도움이든 감사히 받겠습니다.

내가 '아무 CPU나'를 목표로 삼았다고 말한 것처럼

이것이 문제일 가능성이 높습니다.

오라클 말입니다.DataAccess에는 32비트64비트 시스템용으로 별도의 버전이 있습니다.32비트 시스템에서 개발한 다음 64비트 OS에 배포하는 경우 이 메시지가 표시됩니다.

x86을 대상으로 애플리케이션을 구축하고 32비트 버전의 데이터 액세스 구성 요소를 배포하면 쉽게 이 문제를 해결할 수 있습니다.

Reed Copsey가 말했듯이, 두 개의 다른 DLL이 있습니다.당신이 ANYCPU를 목표로 할 때, 당신의 앱은 64비트 기계에서 64비트로 실행되고, 32비트 기계에서 32비트로 실행됩니다.따라서 앱이 32비트 또는 64비트에서 작동하고 AnyCPU 모드에서 실행되도록 하려면 Oracle의 참조를 변경해야 합니다.DataAccess to Specific Version= false 및 copy local= false.클라이언트에 배포할 때는 GAC에 Oracle dll이 포함되어 있어야 하며 자동으로 올바른 버전을 선택해야 합니다.

오라클이 있는지 확인해보셔야 할 것 같습니다.DataAccess 어셈블리는 컴퓨터에 종속성이 있으며 클라이언트 컴퓨터에 없습니다.

debug Any cpu에서 상단의 optin을 debug X64로 변경합니다. 내부적으로 Any cpu가 X64만을 가리키지만 작동하지는 않지만 x64로 변경을 시도하면 매력처럼 작동합니다.

언급URL : https://stackoverflow.com/questions/10658078/c-sharp-odp-net-load-file-or-assembly

반응형