¿Qué hace exactamente la opción del proyecto VS "Registrarse para interoperabilidad COM" en realidad? Porque cuando construyo mi biblioteca con esta opción habilitada, puedo llamar a CreateObject en mi biblioteca desde VBScript. Pero si construyo sin esto y luego ejecuto regasm manualmente, CreateObject falla. Entonces me pregunto: ¿qué hace VS2010 que no estoy haciendo?¿Qué significa en realidad "Registrarse para la interoperabilidad COM"?
Respuesta
Hace lo mismo que ejecutar Regasm.exe con las opciones/tlb y/codebase. La opción/codebase es probablemente la que olvidaste. A Regasm le gusta asumir que coloca el archivo DLL en el GAC y genera una advertencia cuando no lo hace. El GAC es de hecho una muy buena manera de evitar DLL Hell, siempre es un problema COM. Pero no es apropiado en su máquina de desarrollo, no quiere contaminar el GAC mientras desarrolla y prueba el código. Solo importa en la máquina de su usuario, la que probablemente esté expuesta a múltiples versiones.
El uso de la versión incorrecta de Regasm.exe en una máquina de 64 bits es otra forma de meterse en problemas, generalmente hay 4 versiones en su máquina. Asegúrese de distinguir las versiones de 32 bits y de 64 bits (c: \ windows \ microsoft \ framework vs framework64), escriben diferentes claves de registro. Desea elegir el que sea compatible con la aplicación del cliente. Usar ambos también está bien, el código .NET se puede ejecutar en cualquier modo, pero es bastante inusual. Y distinga entre la v2.0.50727 (.NET 2.0 a 3.5SP1) y las versiones v4.0. Elegir el símbolo del sistema de Visual Studio correcto es la mitad de la batalla.
- 1. Registrar para interoperabilidad COM
- 2. ¿Qué significa "dinámico" en realidad?
- 3. COM Registro de interoperabilidad
- 4. interoperabilidad COM sin regasm
- 5. ¿Qué significa en realidad LRU de Memcached?
- 6. ¿Qué significa "outer =>" en realidad?
- 7. ¿Qué significa software "performant" en realidad?
- 8. ¿Qué significa $ this en realidad?> Codeigniter
- 9. "Registrarse para COM Interop" frente a "Hacer visible el ensamblado COM"
- 10. Reflexión sobre la interoperabilidad COM objetos
- 11. Se usa System.Runtime.InteropServices.GuidAttribute para cualquier cosa, excepto la interoperabilidad COM
- 12. Rieles: ¿Qué significa en realidad "renderizar una plantilla"
- 13. ¿Qué significa "Cuando se carga una clase" en realidad?
- 14. ¿Qué significa en realidad "Self Time" del perfilador de Netbeans?
- 15. ¿Ya existe una clase contenedora para una interoperabilidad COM IStream?
- 16. ¿Qué significa "COM" significa en la columna de la sección Ndx .symtab?
- 17. ¿Qué interfaz de colección debo usar en .NET para COM-interoperabilidad?
- 18. ¿Es posible registrar un ensamblado .NET para interoperabilidad COM sin agregar entradas de registro?
- 19. ¿Qué hace CascadeType.REFRESH en realidad?
- 20. ¿Por qué se prefiere la interoperabilidad de COM sobre P/Invoke en .NET?
- 21. Directrices de recuento de referencia de interoperabilidad COM
- 22. Registrarse para notificación push
- 23. ¿La interoperabilidad COM respeta los límites del Dominio de aplicación .NET para la carga de ensamblaje?
- 24. Manejo de eventos COM en C++ (ATL, MFC o C++ puro) para la interoperabilidad de Java
- 25. ¿Qué es este tipo `Object [*]` que obtengo con la interoperabilidad COM?
- 26. Secuencia de carga del ensamblado de interoperabilidad COM
- 27. ¿Qué hace ImageSwitcher en realidad?
- 28. Ensamblados dependientes y de interoperabilidad COM sin registro
- 29. BSTR de clasificación de C++ a C# con interoperabilidad COM
- 30. ¿Qué hace la configuración INSTALLED_APPS en Django en realidad?
¡Gracias! Estaba usando la opción/codebase pero al parecer estaba usando la versión de 64 bits en lugar de la de 32 bits. Utilizó explícitamente la versión de 32 bits y funcionó como un amuleto. – hackerhasid
Tenga en cuenta que el uso de ambas versiones es aceptable. El código .NET puede ejecutarse de cualquier manera. –