Imagino que puedo compilar un C# DLL y luego exponerlo como un objeto COM para que pueda ser CreateObject'd desde VBscript. Simplemente no estoy seguro de los pasos necesarios para hacer esto ...¿Cómo puedo llamar al código .NET (C#/vb.net) de vbScript?
Respuesta
Puede ser muy simple hacer esto. Pero hay muchos lugares donde no es tan simple. Depende mucho de lo que tu clase necesita para poder hacer, y de cómo pretendes implementarlo.
Algunas cuestiones a considerar:
- Su clase tiene que tener un constructor sin parámetros.
- No puede exponer los métodos estáticos.
- Está implementando su DLL COM en el caché de ensamblados global ¿Está bien? Si no, tendrá que darle un nombre fuerte y registrarlo usando
regasm /codebase
. - ¿Le importa qué GUID identifican la clase y sus interfaces? Si no, puede dejar que
regasm
los asigne, pero serán diferentes cada vez (y cada lugar) en que se registra la clase. Si necesita que los GUID permanezcan invariables en todas las instalaciones, deberá marcar a los miembros con el atributoGuid
. - ¿Va a utilizar la clasificación predeterminada de los tipos de datos entre .NET y COM? De lo contrario, necesitará marcar propiedades y métodos con el atributo
MarshalAs
. - ¿Te importa qué clase de interfaz COM expone tu clase? Si es así, tendrá que tratar con el atributo
InterfaceType
. - ¿Necesita su clase plantear o responder a eventos? Si es así, hay implicaciones sobre cómo diseñar su interfaz de clase.
Hay una muy buena (si anticuado) artículo sobre interoperabilidad COM y .Net here. (Muchas cosas de las que habla el artículo, como la generación de bibliotecas de tipos, ahora se manejan automáticamente). Y Microsoft's documentation está actualizado, pero no tan detallado.
Debe usar la utilidad regasm
para registrar un ensamblaje (como lo hace con regsvr32
con servidores COM). Entonces puedes usarlo desde COM. Asegúrese de que esté instalado en el GAC. El material debe tener [ComVisible(true)]
para que se pueda usar desde COM.
Hay una opción "COM Accesible" para cada proyecto que puede seleccionar. Entonces, por supuesto, debe registrar el conjunto para usarlo, pero eso es todo.
tuve que ir a buscar un poco para encontrarlo para C# (estoy acostumbrado a VB.Net), pero se pueden encontrar la opción haciendo doble clic sobre la carpeta Properties
en el Explorador de soluciones, la elección la pestaña Application
y luego haga clic en el botón Assembly Information...
.
- 1. ¿Cómo puedo llamar al código .NET de Java?
- 2. llamando al objeto .NET COM de VBScript
- 3. ¿Cómo llamar al servicio web utilizando vbscript (sincrónico)?
- 4. Error de VBScript al llamar a GetObject ("WinNT: // JohnDoe, usuario")
- 5. No se puede llamar al código C# de vbscript - Error de ActiveX
- 6. Cómo llamar a un archivo VBScript en una aplicación C#?
- 7. Cómo llamar a la función DLL de C# desde VBScript
- 8. La mejor manera de llamar al código administrado .NET desde el código no administrado
- 9. ¿Llamar al código C# de Java?
- 10. ¿Llamar al código de Scala desde Java?
- 11. ¿Cómo puedo llamar al código Java desde el código JavaScript en Wicket?
- 12. .NET error al llamar a System.Net.WebClient.UploadFileAsync
- 13. ¿Llamar a VBScript desde JavaScript o viceversa?
- 14. Ejecuta un vbscript desde otro vbscript
- 15. NoSuchMethodError al llamar código java de Scala
- 16. Llamar al procedimiento almacenado de SQL con parámetro de salida en VBScript
- 17. Cómo llamar al código de MATLAB desde C?
- 18. Llamar al ensamblado de .NET desde Java: bloqueos de JVM
- 19. VBScript ¿Cómo puedo formatear la fecha?
- 20. Llamar .NET/C# desde R
- 21. ¿Cómo puedo devolver un código de salida de una aplicación de consola VBScript
- 22. ¿Es posible llamar al código C++ desde C#?
- 23. Llamar a una devolución de llamada nativa desde el código .NET administrado (al cargar el código administrado usando COM)
- 24. ¿Cómo puedo llamar al constructor de mi servicio WCF?
- 25. ¿Cómo puedo llamar al script Perl en la aplicación C#?
- 26. ¿Puedo obtener vbscript para mostrar un mensaje de error amistoso?
- 27. ¿Cómo puedo ingresar al código fuente del marco de .NET de Microsoft?
- 28. InvalidOperationException al llamar a SaveChanges en .NET Entity framework
- 29. Llamar código F # de C#
- 30. cómo llamar al constructor padre?