Problema de interoperabilidad COM de 64 bits de Visual Studio 2010
visual-studio-2010 vc6 (1)
Este problema se puede resolver abriendo el archivo CSProj y agregando el siguiente nodo a cualquiera de los nodos ''(Configuración) | Cualquier CPU'' que faltan:
<PlatformTarget>AnyCPU</PlatformTarget>
Si este nodo no está presente, TlbImp tomará por defecto x86 y causará problemas.
Estoy intentando agregar una DLL COM de VC6 a nuestra solución C # VS2010RC. La DLL se compiló con las herramientas VC6 para crear una versión x86 y se compiló con las herramientas multiplataforma VC7 para generar una DLL VC7.
La versión x86 del ensamblaje funciona bien siempre y cuando la plataforma del proyecto C # que consume se ajuste a x86. No importa si la versión x64 o x86 de la DLL está registrada. Funciona con ambos. Si la plataforma se establece en ''Cualquier CPU'', recibo una BadImageFormatException
en la carga de la Interop.<name>.dll
.
En cuanto a la versión x64, ni siquiera puedo crear el proyecto. Recibo el error tlbimp:
TlbImp: error TI0000: se debe especificar un único tipo de máquina válido compatible con la biblioteca de tipos de entrada.
¿Alguien ha visto este problema?
EDITAR:
He investigado mucho más este problema y creo que esto puede ser un error de Visual Studio. Tengo una solución limpia. Traigo mi ensamblaje COM con el lenguaje independiente ''Cualquier CPU'' seleccionado. La arquitectura de proceso de la Interop DLL resultante es x86 en lugar de MSIL.
Puede que tenga que hacer la interoperabilidad a mano por ahora para que esto funcione.
Si alguien tiene otra sugerencia, hágamelo saber.