È possibile eseguire un assembly .NET (dll) da vbscript?
-
03-07-2019 - |
Domanda
Vorrei eseguire un file dll .NET da vbscript in modo sincrono - è possibile? se sì, è possibile eseguire un assembly GAC?
Grazie, Ofer
Soluzione
Penso che devi prima rendere visibile l'assembly .NET COM includendo l'attributo ComVisible nel file AssemblyInfo.cs:
[ComVisible(true)]
Vedi questa pagina su MSDN: Imballaggio di un assieme per COM
E poi in VBScript puoi accedere a quei componenti con lo stesso mezzo con cui accedi ai componenti COM, ovvero usando CreateObject o Server.CreateObject come in:
Set testObj = CreateObject("MyNamespace.MyType")
Penso che GAC potrebbe anche essere obbligatorio per accedervi da VBScript ma non l'ho fatto in questo modo, quindi non ne sono sicuro.
Perché dovresti farlo in VBScript? Perché non creare semplicemente un'applicazione console .NET che farebbe ciò che VBScript avrebbe dovuto fare? Dato che la DLL è già su .NET, questo non dovrebbe essere un problema, giusto?
EDIT: Un altro modo per farlo potrebbe essere quello di creare una console EXE anziché una DLL (o un EXE che racchiuda una DLL) che puoi chiamare da VBScript come un normale programma eseguibile e esaminare i risultati di ritorno. A seconda di molti fattori, questo potrebbe essere più flessibile del mantenimento del codice COM.
Altri suggerimenti
VBScript può eseguire solo codice da oggetti COM, quindi è necessario creare un wrapper COM per il proprio codice .NET e quindi si dovrebbe essere in grado di chiamare il proprio codice .net.
Non direttamente.
Se l'assembly .NET è stato esposto come componente COM, potrebbe esserlo.