¿Cuál es la diferencia real entre estas dos opciones? Lo que sé es:"Registrarse para COM Interop" frente a "Hacer visible el ensamblado COM"
Registrar para interoperabilidad COM
Esta opción ejecuta regasm en el montaje y registra la asamblea como un componente COM (o quizá no) en el registro con todas COM como entradas de registro. ¿Este paso genera un archivo TLB? ¿Qué más se hace?
A veces veo que se genera un tlb cuando compilo el proyecto pero a veces no, ¿por qué es esto?
Hacer COM asamblea visible
¿Qué efecto tiene sobre éste una asamblea? Si tengo el siguiente tipo dentro de este ensamblaje, ¿aún necesito especificar "Hacer visible el ensamblado COM" aunque mi tipo esté marcado como ComVisible?
[GuidAttribute("02810C22-3FF2-4fc2-A7FD-5E103446DEB0"), ComVisible(true)]
public interface IMyInterface
{
}
+1. Supongo que una razón más de por qué es opcional es que no siempre es necesario registrar el ensamblado en su servidor de compilación diario. Por ejemplo, expone un ensamblado de C# a COM y lo consume desde C++ a través de la directiva '# import', que está contento de usar el archivo .tlb. – sharptooth
+1: Creo que con "todos los tipos en ensamblaje [ComVisible]" quiere decir * todos los tipos públicos * porque los tipos públicos son los que veo en el TLB exportado. – A9S6
Gracias, los comentarios se combinaron en la respuesta. –