Поэтому у меня есть приложение с устаревшими библиотеками, собранными против 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
.
Почему это не работает? Я не понимаю, для каких перенаправлений для связывания сборки?
Вы можете проверить файл проекта для ссылки на 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. Как только я сделал это изменение, я мог продолжить дальше.
OracleParameter