¿Se puede utilizar un componente COM sin registro sin registrarlo en la máquina de desarrollo?

StackOverflow https://stackoverflow.com/questions/6351226

  •  28-10-2019
  •  | 
  •  

Pregunta

Tengo un componente COM sin registro que desarrollé que funciona bien en las máquinas de destino sin necesidad de registrar el componente. Está en una DLL que tiene TLB incrustada y un recurso RT_Manifest que tiene el manifiesto que enumera las dependencias de ensamblaje y los CLSID para el componente.

En Visual Studio (2008) todavía necesito registrar este componente COM para hacer al menos dos cosas que he probado. Al agregar una referencia al componente, no puedo seleccionar la propiedad aislada para la referencia a menos que el componente esté registrado. Tampoco puedo crear instancias del objeto cuando el depurador se ejecuta a menos que el componente esté registrado. Sin embargo, puedo agregar la referencia y compilar la aplicación y ejecutarla sin registrar el componente.

¿Existe alguna forma de utilizar un componente COM sin registro en Visual Studio sin registrarlo, o tiene que estar registrado en la máquina de desarrollo para que todo funcione correctamente?

¿Fue útil?

Solución

Aquí es importante comprender la diferencia entre el tiempo de compilación y el uso de tiempo de ejecución de un componente COM. Reg-Free Com es puramente una función de tiempo de ejecución. El manifiesto que escribe que describe la interfaz COM es la parte sin registro. No tiene que registrar el componente COM en el registro de la máquina. Proporciona la información de registro en un archivo en su lugar. Lo que significa que no necesita un instalador. Lo que también significa que está aislado de los problemas de registro. Mejor conocido como Dll Hell.

Las claves en el registro, o las entradas en el manifiesto, son importantes para ayudar a COM a calcular qué DLL debe cargarse cuando el Cliente COM le pide que cree una instancia del objeto COM.

Esto es muy distinto del tiempo de compilación. Una biblioteca de tipos es muy útil para decirle al compilador si escribió o no el código correcto. ¿El componente COM realmente tiene una interfaz IFOO? ¿La interfaz IFOO realmente tiene un método Mumble () que toma dos argumentos? La biblioteca de tipos le dice al compilador cómo se ve la interfaz y le permite al compilador hacer una verificación estática del código que escribió. Distinto de la 'unión tardía' por cierto, una opción que le permite escribir código de cliente COM sin una biblioteca de tipo (y, por lo tanto, sin comprobación de tipo). Común en idiomas de secuencias de comandos.

Reiterando: el COM sin registro se trata únicamente de la instalación, no sobre el código de escritura.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top