С# ODP.NET Загрузить файл или сборку

Недавно я начал тестировать приложение С# (4.0), использующее ODP.NET(Oracle.DataAccess 4.112.3)

Я настроил этот проект на любую платформу и опубликовал приложение.

Когда я запускаю программу на клиентской машине, я получаю:

Could not load file or assembly 'Oracle.DataAccess, Version=4.112.3.0,Culture=neutral,
PublicKeyToken=89b483f429c47342' or one of its dependencies. An attempt was made to load 
a program with an incorrect format.

Как я уже сказал, я нацелил "Любой процессор", и я также добавил сборку Oracle.DataAccess с помощью приложения.
Я получаю эту ошибку на машинах, на которых установлен клиент Oracle, а также на машинах, которые этого не делают.

Любая помощь приветствуется.

Ответ 1

Как я уже сказал, я нацелил "Любой процессор"

Вероятно, это проблема.

Oracle.DataAccess имеет отдельные версии для 32bit и 64-битных систем. Если вы работаете на 32-битной машине и затем развертываете ее на 64-битной ОС, вы получите это сообщение.

Вы можете легко обойти это, создав приложение для целевой x86 и развернув 32-битную версию компонентов доступа к данным.

Ответ 2

Как сказал Рид Копси, есть две разные библиотеки DLL. Когда вы нацеливаете ANYCpu, ваше приложение будет работать в 64-разрядной версии на 64-битной машине и 32-разрядной на 32-битной машине. Поэтому, если вы хотите, чтобы ваше приложение работало на 32 или 64 бит и запускалось в режиме AnyCPU, вы должны изменить ссылку Oracle.DataAccess на конкретную версию = false и скопировать local = false. Когда вы развертываете клиент, они должны иметь dll oracle в своем GAC, и он должен автоматически выбирать правильную версию.

Ответ 3

Возможно, вы должны проверить, имеет ли сборка Oracle.DataAccess какие-либо зависимости на вашем компьютере и что на клиентском компьютере отсутствует.

Ответ 4

Отладка Любой процессор в верхней части меняет optin для отладки X64, хотя внутри любой CPu указывает только на X64, но это не работает, попробуйте изменить его на x64, и он должен работать как прелесть