Я пытаюсь добавить 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 вручную на данный момент, чтобы заставить это работать.
Если у кого-либо есть другое сообщенное мне предложение.
Эту проблему можно решить, открыв файл CSProj и добавив следующий узел к любому из узлов «(Конфигурация) | Любой процессор», на котором он отсутствует:
<PlatformTarget>AnyCPU</PlatformTarget>
Если этот узел отсутствует, TlbImp по умолчанию будет x86 и вызвать проблемы.