2009-03-01 86 views

回答

14

我認爲你必須首先使.NET程序集COM可見通過在AssemblyInfo.cs文件的標記有ComVisible特性屬性:

[ComVisible(true)] 

請參閱MSDN上此頁:Packaging an Assembly for COM

然後在VBScript中,您可以通過同一個訪問這些組件意味着你訪問COM組件,即使用的CreateObject或的Server.CreateObject爲:

Set testObj = CreateObject("MyNamespace.MyType") 

餘噸彗星GAC甚至可能是強制性的從VBScript訪問它,但我沒有這樣做,所以我不知道。

你爲什麼想在VBScript中做到這一點?爲什麼不製作一個.NET控制檯應用程序來完成你的VBScript所要做的事情?由於該DLL已經在.NET上,這應該不成問題,對吧?


編輯:另一種方式來做到這一點可能是創建一個控制檯EXE而不是一個DLL(或包裝了一個DLL的EXE),您可以從VBScript調用像一個正常的可執行程序和審查返回結果。取決於許多因素,這可能比維護COM代碼更靈活。

+0

像往常一樣我被迫去那個:-) 有一個寫在vbscript中的項目需要擴展。 擴展名不能用vbscript完成。 – ofer 2009-03-01 16:43:28

2

的VBScript只能從COM對象執行代碼,所以你需要創建一個COM包裝爲您的.NET代碼,那麼你應該能夠調用.NET代碼。

2

不是直接。

如果.NET程序集是作爲COM組件公開的,那麼它可能是。

相關問題