2009-03-01 8 views

Antwort

14

Ich glaube, Sie müssen zuerst durch die Einbeziehung der ComVisible Attribut in der AssemblyInfo.cs-Datei, um die .NET-Assembly COM-sichtbar machen:

[ComVisible(true)] 

Sehen Sie diese Seite auf MSDN: Packaging an Assembly for COM

Und dann in VBScript können Sie diese Komponenten zugreifen, indem Sie die gleichen Mittel greifen Sie COM-Komponenten, dh unter Verwendung von Create oder Server.CreateObject wie in:

Set testObj = CreateObject("MyNamespace.MyType") 

I t Hink GAC könnte sogar obligatorisch sein, um von VBScript darauf zuzugreifen, aber ich habe es nicht so herum gemacht, also bin ich mir nicht sicher.

Warum sollten Sie das in VBScript tun? Warum sollten Sie nicht einfach eine .NET-Konsolenanwendung erstellen, die das macht, was Ihr VBScript tun sollte? Da die DLL bereits auf .NET ist, sollte das kein Problem sein, oder?


EDIT: Ein anderer Weg, dies zu tun sein könnte, eine Konsole EXE statt einer DLL (oder eine EXE-Datei, die eine DLL einpackt) zu erstellen, die Sie von VBScript wie ein normales ausführbares Programm aufrufen und prüfen, Ergebnisse zurückgeben. Abhängig von vielen Faktoren ist dies möglicherweise flexibler als der COM-Code.

+0

Wie immer im gezwungen, dazu :-) Es gibt ein vorhandenes Projekt in VBScript geschrieben, das erweitert werden muss. Die Erweiterung kann nicht mit VBScript durchgeführt werden. – ofer

+0

@ofer duh ... Ich kenne den Schmerz der Aufrechterhaltung von Legacy-Code in einer alten Sprache. – chakrit

2

VBScript kann nur Code von COM-Objekten ausführen, so dass Sie ein COM-Wrapper für Ihre .NET-Code erstellen müssten und dann sollten Sie in der Lage sein, Ihre .net-Code aufzurufen.

2

Nicht direkt.

Wenn die .NET-Assembly als eine COM-Komponente verfügbar gemacht wurde, dann könnte es sein.