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
'prosource' 카테고리의 다른 글
Windows 7 .net Excel.SaveAs() HRESULT 오류 예외: 0x800A03EC (0) | 2023.10.10 |
---|---|
SSL을 사용하면 Facebook 좋아요 단추가 끊어집니다. (0) | 2023.10.10 |
MariaDB는 'view' 테이블에서 datetime 필드로 필터링할 때 빈 집합을 반환하는 반면 MySQL(및 base view sql)은 정상적으로 작동합니다. (0) | 2023.10.10 |
작은 int를 부울 최대 절전 모드로 매핑 (0) | 2023.10.05 |
HikariCP pass Oracle 사용자 지정 유형 (0) | 2023.10.05 |