Có thể buộc ứng dụng của bạn luôn sử dụng phiên bản ODP và ODAC mà bạn muốn.
-
Buộc phiên bản ODP:sử dụng thủ thuật AssemblyBinding do Robert đăng để buộc sử dụng phiên bản Oracle.DataAccess của bạn thay vì phiên bản GAC'd. Ví dụ:
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Oracle.DataAccess" culture="neutral" publicKeyToken="89b483f429c47342"/> <codeBase version="4.112.3.0" href="FILE://Oracle.DataAccess.dll"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
-
Buộc phiên bản ODAC:ODP DLL phụ thuộc vào một tập hợp các thành phần Oracle được chia sẻ (ứng dụng khách tức thì, dlls OCI không được quản lý). Một cách để có được những thứ này là thông qua gói ODAC. Bạn có thể xác định (trên cơ sở mỗi ứng dụng), gói ODAC nào bạn muốn sử dụng. Theo truyền thống, điều này được thực hiện thông qua biến PATH env, nhưng bây giờ nó có thể được xác định thông qua config:
<configuration> <configSections> <section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> </configSections> <oracle.dataaccess.client> <settings> <add name="DllPath" value="C:\somefolder\ODAC_11.2.0.3.0_32bit\bin" /> </settings> </oracle.dataaccess.client> </configuration>
-
Để phòng ngừa thêm, bạn luôn có thể xóa DLL chính sách nhà xuất bản của GAC'd, để đảm bảo không bao giờ có bất kỳ điều gì thú vị xảy ra.