Доступ к серверу x86 COM+ из кода x64

Мне нужно получить доступ к dll x86 (сторонняя сторона, без доступа к источнику) из кода x64. Мое исследование показало, что наиболее подходящим подходом было помещение dll в оболочку COM+ и доступ в качестве службы OOP.

Все идет нормально.

Итак, следуя руководству из "Рецепты совместимости NET 2.0 - подход к решению проблем" (хотя я использую VS2010 и .NET4). Я создал пробную версию службы (dll) и тестовый клиент (exe), службу, работающую как серверное приложение, чтобы быть ООП. Они оба работают, и отключение службы через службы компонентов убивает ее, поэтому, похоже, она использует правильный маршрут.

Это все в x86.

Когда я меняю клиент на x64, я получаю «BadImageFormatException», которого я ожидал бы, если бы он просто загружал dll x86, но это должно работать с ООП.

Я знаю, что что-то упускаю, и это, вероятно, совершенно очевидно.

Другие примечания:

1) Я запускаю regsvcs после сборки и regsvcs /u prebuild 2) Проблемная dll застряла как есть, и моя основная кодовая база должна быть x64


person Oybon    schedule 11.07.2012    source источник


Ответы (1)


Вам нужно заставить вашу программу работать в режиме x86 на всех платформах. Перейдите в свойства основной сборки и на вкладке «Сборка» измените «Цель платформы» с «Любой процессор» на «x86». Это заставит все сборки работать в режиме x86 даже на машинах x64.

person Jon    schedule 11.07.2012
comment
Ни один из них не Any CPU, сервер x86, а клиент x64. Я не хочу, чтобы клиент работал в x86, это разрушило бы всю цель использования COM+, поскольку я мог бы просто использовать dll в коде. - person Oybon; 11.07.2012