2009-04-20 26 views
10

Ich habe mein Skript auf dem Server, so dass ich keine UI-Interaktion zur Verfügung haben und DLL anstelle der Konsolenanwendung verwenden müssen.So rufen Sie C# DLL-Funktion von VBScript

So rufen Sie eine Funktion in C# DLL von VBScript?

Wie stelle ich meine DLL auf COMVisible? Muss ich es registrieren?

+0

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

Antwort

21

Sie müssen Ihre Assembly als COM sichtbar markieren, indem Sie COMVisibleAttribute auf true setzen (entweder auf Assembly-Ebene oder auf Klassenebene, wenn Sie nur einen einzigen Typ anzeigen möchten).

Nächstes registrieren Sie es mit:

regasm /codebase MyAssembly.dll 

und es schließlich von VBScript rufen:

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

Siehe auch [Exposing .NET-Komponenten zu COM] (http://www.codeproject.com/Artikel/3511/Exposed-NET-Komponenten-zu-COM? Fid = 14076 & df = 90 & mpp = 25 & noise = 3 & prof = Falsch & sort = Position & view = Schnell & spc = Entspannt & fr = 26 # csharp) – bluish

+0

Ist es möglich, Dim MyObj As MyNamespace.MyObject zu verwenden 'in VBScript wie in VBA, so dass Sie nicht 'CreateObject' brauchen? Gibt es einen ausdrücklichen Hinweis, den Sie machen können? – cheezsteak

2

Ja Sie das ComVisible Attribut auf true und dann registrieren, die Montage mit regasm einstellen müssen oder regsvcs zusammen mit tlbexp. Dann können Sie Server.CreateObject verwenden und durchfahren.