2009-03-01 1 views

ответ

14

Я думаю, вы должны сначала сделать сборку .NET COM-видимый включая ComVisible атрибут в файле AssemblyInfo.cs:

[ComVisible(true)] 

Смотрите эту страницу на MSDN: Packaging an Assembly for COM

, а затем в VBScript вы можете получить доступ к этим компонентам тем же способам получить доступ к COM-компоненты, то есть с помощью CreateObject или Server.CreateObject как в:

Set testObj = CreateObject("MyNamespace.MyType") 

Я думаю, что G AC может быть даже обязательным для доступа к нему из VBScript, но я не сделал этого так, поэтому я не уверен.

Почему вы хотите сделать это в VBScript? Почему бы просто не создать консольное приложение .NET, которое бы делало то, что должен был делать ваш VBScript? Поскольку DLL уже на .NET, это не должно быть проблемой, не так ли?


EDIT: Еще один способ сделать это может быть, чтобы создать консольную EXE вместо DLL (или EXE, которые оборачивают DLL), которые вы можете позвонить из VBScript, как обычная исполняемой программа и изучить вернуть результаты. В зависимости от многих факторов это может быть более гибким, чем поддержание COM-кода.

+0

Как обычно, я вынужден к этому :-) Существует существующий проект, написанный в vbscript, который необходимо расширить. расширение не может быть выполнено с помощью vbscript. – ofer

+0

@ofer duh ... Я знаю, как сохранить устаревший код на унаследованном языке. – chakrit

2

VBScript может выполнять только код из объектов COM, так что вам нужно будет создать COM-обертка для вашего кода .NET, а затем вы должны быть в состоянии назвать свой код .net.

2

Не напрямую.

Если сборка .NET была представлена ​​как COM-компонент, то это могло бы быть.

Смежные вопросы