Я пытаюсь добавить VC6 COM DLL в наше решение VS2010RC С#. DLL была скомпилирована с помощью инструментов VC6 для создания версии x86 и была скомпилирована с помощью кросс-платформенных инструментов VC7 для генерации библиотеки VC7.
Версия сборки x86 отлично работает, если для платформы потребляющего С# проекта установлено значение x86. Неважно, действительно ли зарегистрирована x64 или x86 версия DLL. Он работает с обоими. Если платформа установлена в "Любой процессор", я получаю BadImageFormatException
от нагрузки Interop.<name>.dll
.
Что касается версии x64, я даже не могу построить проект. Я получаю ошибку tlbimp:
TlbImp: ошибка TI0000: один действительный тип машины, совместимый с библиотека типов ввода должна быть указана.
Кто-нибудь видел эту проблему?
ИЗМЕНИТЬ:
Я сделал намного больше в этом вопросе и думаю, что это может быть ошибка Visual Studio. У меня чистое решение. Я привожу свою сборку COM с выбранным языковым агностиком "Любой CPU". Архитектура процесса результирующей библиотеки Interop DLL - это x86, а не MSIL.
Мне нужно сделать Interop вручную, чтобы заставить это работать.
Если у кого есть другое предложение, дайте мне знать.