c# tag propiedad - El tipo de interoperabilidad no se puede incrustar





4 Answers

En la mayoría de los casos, este error es el resultado del código que intenta crear una instancia de un objeto COM. Por ejemplo, aquí hay un fragmento de código que inicia Excel:

Excel.ApplicationClass xlapp = new Excel.ApplicationClass();

Normalmente, en .NET 4 solo necesitas eliminar el sufijo 'Clase' y compilar el código:

Excel.Application xlapp = new Excel.Application();

Una explicación de MSDN está here .

c# visual-studio-2010 visual-studio c#-4.0

Estoy creando una aplicación web en el marco .NET 4.0 (beta2) en C #.

Cuando intento usar un ensamblaje llamado "ActiveHomeScriptLib", aparece el siguiente error:

El tipo de interoperabilidad 'ActiveHomeScriptLib.ActiveHomeClass' no se puede incrustar. Utilice la interfaz aplicable en su lugar.

Cuando cambio el marco a la versión 3.5, no tengo ningún error.

¿Qué es un tipo de interoperabilidad y por qué esto solo ocurre cuando uso el marco 4.0?




Ampliando la respuesta correcta de Jon.

El problema aquí es que está combinando la nueva característica "Incrustar tipos de interoperabilidad" (o NoPIA) con el uso de un tipo de clase. La función "Incrustar tipos de interoperabilidad" funciona esencialmente mediante la vinculación estática de todos los tipos, desde un PIA (ensamblaje primario de interoperabilidad) al ensamblaje de referencia, lo que elimina la sobrecarga de su implementación.

Esta característica funciona muy bien para la mayoría de los tipos en un PIA pero tiene restricciones. Una de ellas es que no puede incrustar clases (es un problema de mantenimiento). Misha tiene un artículo detallado en el blog sobre por qué esto no está permitido




Tengo la solucion

Vaya a las referencias, haga clic con el botón derecho en la dll deseada y obtendrá la opción "Incrustar tipos de interoperabilidad" en "Falso" o "Verdadero".




Tuve el mismo problema en VB.NET 2013 con Office 2007, y esto lo resolvió:

VS 2013 VB.NET Project> Props> Refs> Microsoft Word 12.0 Object Lib> Incrustar tipos de interoperabilidad: cambiar de verdadero a falso






Related