Visual Studio 64-разрядный выпуск COM Interop 2010 года

Я пытаюсь добавить VC6 COM DLL к нашему решению для VS2010RC C#. DLL был скомпилирован с инструментами VC6 для создания x86 версии и был скомпилирован с Межплатформенными инструментами VC7 для генерации VC7 DLL.

x86 версия сборок, прекрасных пока потребление платформа проекта C#, установлена на x86. Не имеет значения, регистрируются ли x64 или x86 версия DLL на самом деле. Это работает с обоими. Если платформа установлена на 'Любой ЦП', я получаю a BadImageFormatException на загрузке Interop.<name>.dll.

Что касается x64 версии, я не могу даже получить проект создать. Я получаю tlbimp ошибку:

TlbImp: ошибка TI0000: Должен быть указан единственный допустимый тип машины, совместимый с входной библиотекой типов.

Кто-либо видел эту проблему?

Править:

Я сделал намного больше рытья в эту проблему и думаю, что это может быть ошибкой Visual Studio. У меня есть чистое решение. Я ввожу свой блок COM с агностиком языка 'Любой ЦП', выбранный. Архитектура процессов получающегося DLL Interop является x86, а не MSIL.

Вероятно, придется сделать Interop вручную на данный момент, чтобы заставить это работать.

Если у кого-либо есть другое сообщенное мне предложение.

16
задан Adam Driscoll 16 March 2010 в 19:05
поделиться

1 ответ

Эту проблему можно решить, открыв файл CSProj и добавив следующий узел к любому из узлов «(Конфигурация) | Любой процессор», на котором он отсутствует:

<PlatformTarget>AnyCPU</PlatformTarget>

Если этот узел отсутствует, TlbImp по умолчанию будет x86 и вызвать проблемы.

47
ответ дан 30 November 2019 в 15:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: