Estoy planeando utilizar varios objetos que están expuestos como objetos COM. Para que sean más fáciles de usar, me gustaría envolverlos como objetos C#. ¿Cuál es el mejor enfoque para esto?La mejor manera de acceder a los objetos COM desde C#
Respuesta
Si la biblioteca ya está registrado, puede realizar los siguientes pasos para tener Visual Studio generar un ensamblado de interoperabilidad para usted:
- Abierto a su proyecto de Visual Studio.
- Haga clic derecho en 'Referencias' (justo debajo del proyecto en su Explorador de soluciones) y seleccione 'Agregar referencia'.
- Seleccione la pestaña COM.
- Seleccione el Componente con el que desea interoperar.
- Seleccione 'ok'.
Esta será una clase o un conjunto de clases de C# que envuelva todas las cosas de la interfaz COM con una clase C# normal. Entonces simplemente lo usa como cualquier otra biblioteca de C#. Si la importación de la referencia funcionó bien, puede explorarla como cualquier otra referencia y los métodos/estructuras/clases/constantes deberían aparecer en ese espacio de nombres e intellisense.
Esto le permitirá comenzar, al menos. Si esto se implementa en un entorno corporativo o uno que puede controlar, esto puede ser todo lo que necesita.
Usted puede (inicialmente) solo importar la referencia. Si necesita más control (u obtiene errores de la importación de VS), puede usar tlbimp en el SDK de Windows. Esto creará los ensamblados de interoperabilidad. Puede obtener definiciones de clases a partir de metadatos.
EDIT: Esto es en realidad mucho más complicado si se quiere trabajar con 64 bits
¿Por qué es más difícil o diferente? simplemente use el tlbimp del conjunto de herramientas x64 .Net –
Supongo que cualquier ensamblado dependiente que use una arquitectura de 32 bits. Sé que las versiones de 64 bits de las aplicaciones que usan ensamblados COM Interop de 32 bits no funcionan y viceversa. Siempre tuve la impresión de que x64 podía ejecutar cualquier arquitectura, pero aparentemente ese no es el caso. –
Hay un buen artículo de MSDN sobre esto, que explica el código administrado y no administrado, y lo guía paso a paso a cómo hacerlo. http://msdn.microsoft.com/en-us/library/ms973800.aspx#
Have fun!
- 1. ¿Cuál es la mejor forma de acceder a las interfaces COM desde un servidor J2EE?
- 2. Pasando la matriz C# de objetos COM a VB6
- 3. ¿La mejor manera de acceder a píxeles en OpenGL?
- 4. C#: eliminación correcta de objetos C# cuando se creó a través de COM Interop desde VB6
- 5. ¿Cuál es la mejor manera de acceder a Google Calendar desde ruby?
- 6. ¿Cuál es la mejor manera de acceder a Neo4j desde Django?
- 7. ¿La mejor manera de imprimir desde C#/.net?
- 8. ¿Cuál es la mejor manera de definir y acceder a las propiedades seleccionadas en C#?
- 9. C# .Net4: objetos COM (dinámicos) correctamente desechables
- 10. La mejor manera de acceder a una base de datos de SQL Server usando C# .Net
- 11. Mejor forma de lanzar objetos a int
- 12. Objective-C: la mejor manera de acceder a REST API en tu iphone
- 13. Cuál es la mejor manera de acceder a los procedimientos almacenados en ORM de Django
- 14. La mejor manera de agregar funcionalidad a los tipos incorporados
- 15. ¿Cómo puedo destruir objetos COM en C#?
- 16. ¿Cómo acceder a los objetos javascript de iframe desde la página principal?
- 17. ¿Llamar a C# desde C++ nativo, sin/clr o COM?
- 18. Liberación de objetos COM temporales
- 19. Liberación de objetos COM
- 20. La mejor manera de lanzar desde Animal [] a Perro []
- 21. ¿Algún método para acceder a los métodos COM de Windows utilizando Java?
- 22. Acceder a la memoria del bloc de notas desde C
- 23. ¿Cómo acceder a los valores de usercontrol desde la página?
- 24. ¿Cómo puedo acceder a los archivos INI desde Perl?
- 25. ¿Cuál es la mejor manera de insertar inserciones de bases de datos a granel desde C#?
- 26. ¿La mejor manera de concatenar la lista de objetos String?
- 27. ¿Cuál es la mejor manera de integrarse con los libros rápidos del código C#?
- 28. ¿La mejor manera de acceder a la configuración en tiempo de ejecución de un plugin maven desde un mojo personalizado?
- 29. Manera fácil de acceder a memcached desde node.js
- 30. Cómo acceder a objetos de formulario desde otro archivo cs en C#
Mads Torgersen el lenguaje "gerente de producto" para C# dijo en el último podcast DeepFriedBytes sobre C# que agregaron o están agregando ciertas características para facilitar la interoperabilidad con COM. Si pudiera recordar lo que era ... – f3lix
Creo que te estás refiriendo al tipo de variable 'dinámica' que viene en C# 4.0. Esta nueva palabra clave lo hace más fácil, pero ya es posible con C#. –