C# Assembly Binding

ORACLE 2015. 8. 24. 19:50

증상 : Oracle 11g Instant Client로 C# 응용 프로그램 배포 시 기존 클라이언트에 Oracle 12c Client가 설치되어 있는 경우 에러가 발생함 ( Oracle.DataAccess.Client.OracleException: The provider is not compatible with the version of Oracle client )


원인 : Oracle.DataAccess.dll 버전 충돌


해결 : C#의 App.config에서 Assembly Binding 사용하여 내가 사용할 DLL 파일 버전과 위치 지정


App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
  </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Oracle.DataAccess" culture="neutral" publicKeyToken="89b483f429c47342"/>
        <codeBase version="2.112.1.0" href="FILE://C:/MyProgram/Oracle.DataAccess.dll"/>
        <publisherPolicy apply="no"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

컴파일하면 실행파일명.exe.config가 생기는데 이걸 실행파일과 같은 위치에 같이 배포하면 됨.




[참고]

https://support.microsoft.com/en-us/kb/837908

https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586%28v=vs.85%29.aspx#standard_search_order_for_desktop_applications




'ORACLE' 카테고리의 다른 글

Oracle Undo Tablespace Full일 때 확인  (0) 2021.08.12
Flashback으로 Drop된 테이블 복구  (0) 2018.04.09
sqlplus / as sysdba 실행 시 ORA-01017: invalid username/password; logon denied 에러 발생 시  (0) 2017.07.19
Flashback Query  (0) 2016.02.18
expdp meta 데이터만 이동  (0) 2015.11.24
ORA-28040  (0) 2015.05.08
ORA-00119 & ORA-00130 에러  (0) 2015.05.07
Oracle RecycleBin  (0) 2015.05.04
expdp/impdp  (0) 2014.12.31
Oracle Instant Client 사용 방법  (0) 2014.03.28
Posted by 하이안
,