2009-03-01 33 views

Trả lời

14

Tôi nghĩ trước tiên bạn phải làm cho lắp ráp NET COM có thể nhìn thấy bằng cách bao gồm các thuộc tính ComVisible trong AssemblyInfo.cs file:

[ComVisible(true)] 

Xem trang này trên MSDN: Packaging an Assembly for COM

Và sau đó trong VBScript bạn có thể truy cập vào các thành phần đó bằng cùng phương tiện bạn truy cập vào các thành phần COM, tức là sử dụng CreateObject hoặc Server.CreateObject như sau:

Set testObj = CreateObject("MyNamespace.MyType") 

I t hink GAC thậm chí có thể là bắt buộc để truy cập nó từ VBScript nhưng tôi không thực hiện nó theo cách này xung quanh vì vậy tôi không chắc chắn.

Tại sao bạn muốn làm điều đó trong VBScript? Tại sao không chỉ tạo một ứng dụng .NET console để làm những gì VBScript của bạn có ý nghĩa? Kể từ khi DLL đã được trên NET, đó không phải là một vấn đề, phải không?


EDIT: Một cách khác để làm điều này có thể là để tạo ra một giao diện điều khiển EXE thay vì một DLL (hoặc EXE mà kết thúc tốt đẹp một DLL) mà bạn có thể gọi từ VBScript như một chương trình thực thi bình thường và kiểm tra trả lại kết quả. Tùy thuộc vào nhiều yếu tố, điều này có thể linh hoạt hơn việc duy trì mã COM.

+0

Như thường lệ, im buộc phải :-) Có một dự án hiện có được viết bằng vbscript cần được mở rộng. không thể thực hiện tiện ích bằng cách sử dụng vbscript. – ofer

+0

@ofer duh ... Tôi biết nỗi đau của việc duy trì mã cũ trong ngôn ngữ kế thừa. – chakrit

2

VBScript chỉ có thể thực thi mã từ các đối tượng COM, vì vậy bạn sẽ cần phải tạo một wrapper COM cho mã NET của bạn và sau đó bạn sẽ có thể gọi mã .net bạn.

2

Không trực tiếp.

Nếu cụm .NET được hiển thị dưới dạng thành phần COM thì có thể.

Các vấn đề liên quan