Задать вопрос
Avg00r
@Avg00r
DevOps Engineer

Oracle, .NET и ошибка The provider is not compatible with the version of Oracle client?

На девелоперской машине стоит VS2010 и Oracle Developer Tools. На тестовой только .net framework.

Библиотека Oracle.DataAccess.dll из ODT добавлена в референсы и копируется вместе со скомпилированным приложением на тестовую машину. Если библиотеку не копировать, происходит ожидаемый эксепшен:



System.IO.FileLoadException: Could not load file or assembl<br/>
y 'Oracle.DataAccess, Version=4.112.1.2, Culture=neutral, PublicKeyToken=89b483f<br/>
429c47342' or one of its dependencies. The located assembly's manifest definitio<br/>
n does not match the assembly reference. (Exception from HRESULT: 0x80131040)<br/>
 at ConsoleApplication1.Program.Main(String[] args)




Но при копировании Oracle.DataAccess.dll в папку с приложением происходит другая ошибка:



System.TypeInitializationException: The type initializer fo<br/>
r 'Oracle.DataAccess.Client.OracleConnection' threw an exception. ---&gt; Oracle.Da<br/>
taAccess.Client.OracleException: The provider is not compatible with the version<br/>
 of Oracle client<br/>
 at Oracle.DataAccess.Client.OracleInit.Initialize()<br/>
 at Oracle.DataAccess.Client.OracleConnection..cctor()<br/>
 --- End of inner exception stack trace ---<br/>
 at Oracle.DataAccess.Client.OracleConnection..ctor()<br/>
 at Test.Program.Main(String[] args)




Да, если установить на клиентскую машину Oracle client из ODT, то всё работает, но не хотелось бы увеличивать размер дистрибутива на ~300Mb.

Как можно решить проблему без установки дополнительного софта?
  • Вопрос задан
  • 8583 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 2
Pavel7
@Pavel7
Одного Oracle.DataAccess.dll недостаточно, там нужны еще и другие dllки из odp.net. Вот тут хорошо описано: ora-00001.blogspot.com/2010/01/odpnet-minimal-non-intrusive-install.html
Ответ написан
Albertum
@Albertum
Добавьте сборку в GAC (с помощью утилиты gacutil.exe)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы