2009-04-20 4 views
10

Ho il mio script sul server, quindi non ho un'interfaccia utente disponibile e devo usare DLL invece dell'applicazione console.Come chiamare la funzione DLL C# da VBScript

Come chiamare una funzione in C# DLL da VBScript?

Come faccio a rendere la mia DLL da COMVisible? Devo registrarlo?

+0

Aiuta? http://stackoverflow.com/questions/9004352/call-a-function-in-a-console-app-from-vbscript – xameeramir

risposta

21

È necessario contrassegnare il proprio assieme come COM visibile impostando COMVisibleAttribute su true (a livello di assieme o a livello di classe se si desidera esporre solo un singolo tipo).

Poi si registrarlo con:

regasm /codebase MyAssembly.dll 

ed infine chiamare da VBScript:

dim myObj 
Set myObj = CreateObject("MyNamespace.MyObject") 
+0

Vedere anche [Esporre componenti .NET a COM] (http://www.codeproject.com/Articoli/3511/Exposing-NET-Components-to-COM? Fid = 14076 & df = 90 & mpp = 25 & noise = 3 & prof = False & sort = Posizione & vista = Veloce & spc = Rilassato & fr = 26 # csharp) – bluish

+0

E 'possibile usare 'Dim myObj As MyNamespace.MyObject 'in VBScript come puoi in VBA quindi non hai bisogno di' CreateObject'? C'è un riferimento esplicito che puoi fare? – cheezsteak

2

Sì sarà necessario impostare l'attributo ComVisible su true e quindi registrare l'assembly utilizzando regasm o regsvcs insieme a tlbexp. Quindi puoi usare Server.CreateObject e navigare.