Visual Studio 2005 не имеет автоматической ссылки на библиотеки x64 - PullRequest
0 голосов
/ 21 марта 2012

Мне нужно настроить несколько проектов в нашем решении VS 2005 для сборки только на x64. Стороннее программное обеспечение, которое используют проекты, требует его.

Oracle DLL (System.Data.OracleClient.dll), на которую ссылается проект, находится в Windows \ Microsoft.NET \ Framework \ v2.0.57027 что вызывает проблемы при подключении к оракулу из 64-битного проекта.

Есть ли причина, по которой Microsoft не использует каталог Framework64 \ v2.0.50727 для ссылки на System.Data.OracleClient.dll? Проект вынужден собирать до x64, поэтому логично предположить, что он будет использовать ссылки Framework64.

Я получаю ошибку:

System.InvalidOperationException: попытка загрузить клиент Oracle библиотеки выкинули BadImageFormatException. Эта проблема возникнет, когда работает в 64-битном режиме с 32-битными клиентскими компонентами Oracle установлены. ----> System.BadImageFormatException: попытка была сделано для загрузки программы с неверным форматом. (Исключение из HRESULT: 0x8007000B)

Всякий раз, когда я добавляю ссылку, она ссылается только на не 64-битные библиотеки DLL. Нужно ли мне жестко ссылаться на 64-битную версию System.Data.OracleClient.dll?

Спасибо.

1 Ответ

1 голос
/ 21 марта 2012

Это не имеет ничего общего с ссылочными сборками. Компилятор всегда использует 32-битную ссылку на сборку. Это нормально, в сборке используются только метаданные , которые одинаковы для 32-битного и 64-битного кода.

Что здесь не так, так это вид сборки, которую он находит в runtime . 32-битные по звуку. Общая проблема с Oracle, они почему-то не любят использовать GAC. А их сборки содержат неуправляемый код, поэтому не могут работать в любом случае. Вам нужно будет либо развернуть 64-битную версию поставщика Oracle, либо заставить вашу программу работать в 32-битном режиме. Обратитесь в службу поддержки Oracle, если не можете разобраться.

...