Estoy tratando de agregar una DLL COM de VC6 a nuestra solución VS2010RC C#. La DLL se compiló con las herramientas de VC6 para crear una versión x86 y se compiló con las herramientas multiplataforma VC7 para generar una DLL VC7.Visual Studio 2010 64-bit COM Interop Issue
La versión x86 del ensamblaje funciona bien siempre que la plataforma del proyecto C# consumidor esté configurada en x86. No importa si la versión x64 o x86 de la DLL está realmente registrada. Funciona con ambos. Si la plataforma está configurada en 'Cualquier CPU', recibo un BadImageFormatException
en la carga del Interop.<name>.dll
.
En cuanto a la versión x64, ni siquiera puedo obtener el proyecto para compilar. Recibo el error tlbimp:
TlbImp : error TI0000: A single valid machine type compatible with the input type library must be specified.
¿Alguien ha visto este problema?
EDIT:
que he hecho mucho más la excavación en este tema y que esto puede ser un error de Visual Studio. Tengo una solución limpia. Traigo mi ensamblado COM con el idioma 'Cualquier CPU' seleccionado. La arquitectura de proceso del DLL Interop resultante es x86 en lugar de MSIL.
Puede que tenga que hacer manualmente la interoperabilidad por ahora para que esto funcione.
Si alguien tiene otra sugerencia házmelo saber.
Ojalá pudiera volver a votar esto un par de veces más. Es obvio lo que significa el error en retrospectiva, pero desconcertante a primera vista. – xcud
Funcionó, pero necesitaba agregar elemento en el archivo CSProj para que VS pueda comenzar a utilizar realmente esta configuración. –
Roboblob