2015-04-13 2 views
1

Наш продукт использует ODP.NET 11g (11.2.0.4 для конкретного). Мы хотим перейти на Oracle 12c, но все же хотим поддерживать предыдущую версию (версия с ODP.NET 11g). У нас есть несколько сборок, в которых используется Oracle.DataAccess.dll. ссылаясь на эти проекты в visual studio, для параметра «Специфическая версия» установлено значение «false».ODP.NET 11.2.04 и 12.1.0.2 Бок о бок

На машине разработчика, когда установлен клиент Oracle 12C, были собраны последние файлы Oracle.dataaccess.dll. Это связано с политикой издателя, которая устанавливается с клиентом Oracle 12c. Я проверил путь oracle.dataaccess, dll в visual studio для соответствующих проектов, и он показывает путь к клиенту ODP.NET 12c. Это работает без каких-либо изменений кода.

Теперь у нас есть проблема с получением этой работы на нашей машине для сборки. Строительная машина должна строить версию 11g, а также версии 12c нашего продукта одновременно.

У нас уже установлен клиент Oracle 11.2.0.4 на машине сборки. Теперь мы установили клиент Oracle 12c на машине сборки. Когда я проверил ссылки в visual studio, путь oracle.dataaccess.dll обновлен, чтобы выбрать из odp.net 12c.

Ниже приводится мой план решения этой проблемы. Когда я хочу построить версию 11g

  1. Удалите связанный с 12c файл политики и oracle.dataaccess dll из GAC.
  2. Удалите путь Oracleclient 12c из переменной PATH. Путь уже содержит путь OracleClient 11g. Удаление пути 12c оставляет переменную пути только с контуром клиента Oracle 11. я бы реверс (деинсталляция 11g, связанные с GAC DLLs и установки 12с и добавьте DLLs 12с Путь к переменной окружения Path)

Но после выполнения шагов 1,2 для построения 11g версии, я все еще вижу ссылки в визуальной студии - до версии 12c. Я что-то пропустил, или я полностью ошибаюсь?

ответ

1

Недостаточно установить значение «Определенная версия» на значение false.

В вашем * .csproj, соотв. * .vbproj редактировать ссылку на ODP.NET так:

<Reference Include="Oracle.DataAccess"> 
    <SpecificVersion>False</SpecificVersion> 
    <Private>False</Private> 
</Reference> 

Не забывайте делать удалить также HintPath элемент