Usando com dlls con FSI
-
29-10-2019 - |
Pregunta
¿Hay alguna manera dentro de FSI que pueda hacer referencia y usar componentes COM registrados?
En un programa compilado .FS normal, simplemente puedo hacer referencia al componente en cuestión y luego abrir los espacios de nombres generados relevantes. Sin embargo, en un archivo .fsx, parece que no puedo replicar este comportamiento. He intentado usar #R para hacer referencia al .dll directamente, y he intentado usar #i para señalar el directorio seguido tanto con el nombre "amigable" de la biblioteca y el nombre del archivo, pero nada parece funcionar.
¿Solo puede hacer referencia a los ensamblados de .NET de un .fsx? Realmente no quiero tener que escribir/generar un ensamblaje de envoltura. Espero que pueda haber una manera de obligar a FSI a tomar los pasos que toman el ejecutable normal para proporcionar la capa de interoperabilidad.
Solución
Cuando agrega una referencia a un componente COM en Visual Studio, invoca una herramienta para generar un envoltorio (ensamblaje estándar de .NET) y luego hace referencia al envoltorio.
Si quieres hacer referencia a com de fsx
, necesitarás generar el envoltorio tú mismo (o encontrar el generado por Visual Studio?) La herramienta que genera el envoltorio que se llama TlbImp.exe
(ver Tipo de biblioteca Importador en MSDN).