2010-08-23 47 views
1

我正在開發一個ASP.NET應用程序,並且我需要使用一箇舊的VBScript文件,這將很難在VB函數中轉換爲純VB。如何使用VBScript函數的返回值到VB應用程序中?

這個VBScript應該返回一個數組,我想在調用它的VB函數中使用它。

如何在我的VB應用程序中調用VBScript函數並使用它返回的值?

我已經通過很多論壇和常見問題搜索如何做到這一點,但似乎這些結果主要集中在舊版本的.NET框架。

如果有人能通過一個非常基本的例子向我解釋,我會非常感謝


我嘗試使用下面的代碼調用VBS:

Dim WShell As Object 
WShell = CreateObject("WScript.Shell") 
WShell.Run("F:/SERVER/IIS/MyScript.vbs", 1, 0) 
+0

你可以發佈你用來調用這個vbs函數的代碼嗎? – InSane 2010-08-23 09:41:54

+2

我注意到你在新的答案中發佈了代碼。我認爲你的意圖是爲了迴應* In Sane *,對嗎?如果是這樣,那麼這個信息可以被編輯爲原始問題,並且不需要被放入單獨的答案中(當然,除非該答案能解決您的問題)。 – 2010-08-23 11:55:33

回答

0

我嘗試使用下面的代碼調用VBS:

Dim WShell As Object 
WShell = CreateObject("WScript.Shell") 
WShell.Run("F:/SERVER/IIS/MyScript.vbs", 1, 0) 
+0

@Ben McCormack:是的,這是對Sane的迴應,但似乎我無法編輯或評論我的問題,所以我選擇了剩下的唯一選擇:回覆。我想這是因爲我是一個未註冊用戶?無論如何,感謝您的編輯! – Tom 2010-08-23 12:12:31

+2

您已經意外創建了兩個用戶帳戶(http://stackoverflow.com/users/428242/tom和http://stackoverflow.com/users/428356/tom)。電子郵件[email protected]並要求團隊合併它們。 – Helen 2010-08-23 19:56:48

1

VBScript是幾步之遙從VB.NET中移除,因此如果沒有一點重構就會讓代碼在VB.NET中很好地發揮作用,所以很難混淆兩種語言。我看到三種方式你可能會接近這個解決方案:

  1. 重構代碼在VB.NET
    • 工作正如你所說,這可能需要大量的工作,但你必須決定是否或者不需要重構代碼所需的額外工作,因爲在解決方案中引入其他依賴關係的複雜性已經超過了。您還應該讓代碼獨立運行在託管環境中,而不是跨越HTTP或COM邊界,從而獲得性能優勢。
  2. 嵌入腳本到一個傳統的ASP頁面,並使用HTTP消息你的VB.NET應用程序和ASP頁面
    • 的VBScript之間的通信是一個自然的補充,傳統的ASP所以你的腳本應該「只是在ASP頁面上工作「。您可以使用ASP頁面接受通過查詢字符串輸入的內容,並將數據作爲VB.NET應用程序可以理解的文本輸出。你沒有提到你是否正在創建一個ASP.NET網站或一個不同類型的VB.NET應用程序,但是如果你正在構建一個ASP.NET網站,這可能是你要看的東西,我已經在建設一個網站。
  3. 使用VB6/VBA腳本控制在一個COM組件,並使用COM互操作在VB.NET
    • 這就是它開始變得非常複雜與組件通信。在Visual Basic 6(VB6)發佈之前,Microsoft發佈了可嵌入VB應用程序並運行自定義用戶腳本的腳本控制。理論上,您可以創建一個新的VB6組件並引用Microsoft Script Control 1.0,使用調用腳本的新對象Script,並使用COM互操作從VB6應用程序中調用VB6組件。這是一個非常多的工作和運行你的腳本的幾層依賴關係,如果你的腳本字面上是千代碼,我只會推薦這個選項。每當您跨越COM/.NET邊界時,您都會付出性能損失,所以您需要確保您非常小心地制定解決方案。

就個人而言,我想看看重構代碼到VB.NET代碼作爲我的第一選擇。雖然您必須事先做更多的工作,但您確保您正在利用託管代碼中獨有的性能優勢,並且在應用程序中刪除了對其他依賴項的需求。如果腳本真的太可怕了,以至於轉換爲VB.NET會有很多工作,那麼您可以查看其他工具選項。

+0

+1將代碼轉換爲VB.Net可能是最好的選擇。我猜想選項4可能會將VBScript轉換爲ActiveX DLL中的VB6,然後通過COM Interop調用它。 VBScript與VB6是99%相同的,所以應該很容易:代碼可能不會改變。我仍然認爲將VBScript轉換爲VB.Net會更容易。如果對VBScript運行VB6升級嚮導會發生什麼情況,就好像它是VB6一樣? – MarkJ 2010-08-23 20:56:21

相關問題