Tengo un ensamblado .NET que estoy exponiendo a COM. El conjunto tiene dos interfaces públicas y una clase pública. Cuando construyo el conjunto consigo esta advertencia:COM Registro de interoperabilidad
(assemblyName.dll) no contiene ningún tipo que se pueden registrar para interoperabilidad COM.
Mi información de ensamblado incluye la siguiente línea.
[assembly: ComVisible(true)]
mayoría de las personas que tienen este problema en la web, que he encontrado, lo arreglaron con la línea anterior en su información de ensamblado. Esto no ha ayudado para mí.
También intenté agregar [ComVisible(true)]
a las definiciones de clase y de interfaz, y tampoco me ayudó.
Olvidar agregar un constructor predeterminado me pasa algunas veces así que +1 para mencionarlo. –
Agregar un constructor predeterminado público hizo el truco, sin embargo, la clase en cuestión solo se construye desde el código .net. Esta fue la razón por la que no se proporcionó ningún constructor predeterminado público. Supongo que esta advertencia también aparecerá para un ensamblaje que solo contenga interfaces. – trampster
Sí, recibirá la misma advertencia para un ensamblaje con solo interfaces. Supongo que es similar a la forma en que una DLL VB6 ActiveX debe contener al menos una clase públicamente creado. Pero parece innecesariamente restrictivo en el mundo de .NET, ya que podría tener una clase construida por código administrado y pasarla a un componente COM, p. como un argumento de método. – Joe