Попытка перенаправить Oracle.DataAccess в Oracle.ManagedDataAccess

1

Поэтому у меня есть приложение с устаревшими библиотеками, собранными против Oracle.DataAccess. С тех пор приложение было обновлено для использования Oracle.ManagedDataAccess, но старые библиотеки связаны с Oracle.DataAccess.

Поскольку у Oracle.DataAccess и Oracle.ManagedDataAccess есть тот же токен открытого ключа "89b483f429c47342", я решил, что могу сделать перенаправление сборки, чтобы обойти это, но он не сработал.

Вот что я пробовал (в файле Web.config сборки, использующей устаревшие библиотеки):

<dependentAssembly>
  <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.121.1.0" newVersion="4.121.1.0" />
  <publisherPolicy apply="no" />    
</dependentAssembly>

а также

<dependentAssembly>
  <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.121.1.0" newVersion="4.121.1.0" />
  <publisherPolicy apply="no" />    
</dependentAssembly>

В основном, что происходит, ничего. Я продолжаю получать ошибку компиляции:

Ошибка CS0012: Тип "Oracle.DataAccess.Client.OracleParameter" определен в сборке, на которую не ссылаются. Подумайте о добавлении ссылки на сборку "Oracle.DataAccess, Version = 4.112.2.0, Culture = neutral, PublicKeyToken = 89b483f429c47342" (CS0012)

Этот код является методом, который использует тип OracleParameter.

Почему это не работает? Я не понимаю, для каких перенаправлений для связывания сборки?

  • 0
    кажется, что он не может найти нужный тип в вашей новой сборке. Попробуйте использовать отражатель или dotPeek, чтобы найти в нем OracleParameter
  • 0
    Работают ли перенаправления сборки, если имя сборки изменилось?
Показать ещё 1 комментарий
Теги:
ado.net

1 ответ

0

Вы можете проверить файл проекта для ссылки на oracle dll и версию того же. Я столкнулся с такой проблемой и недавно обернулся.

<Reference Include="Oracle.DataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86">
  <HintPath>..\..\SharedAssemblies\Oracle.DataAccess.dll</HintPath>
</Reference>

Как вы можете видеть, ссылочный раздел в моем файле proj имел 4.121.2.0 из того места, где была отправлена dll, а физический файл, присутствующий в местоположении, был версии 4.112.2.0. Как только я сделал это изменение, я мог продолжить дальше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню