我一直在探索擴展QuickTest Professional腳本功能的選項,今天早上遇到了this article,所以我決定嘗試一下。下面的代碼在QTP環境中執行時可以正常工作,但我也可以在QTP環境外看到這個用法。不幸的是,從獨立運行.vbs文件如何在獨立的.vbs文件中從VBScript調用DotNetFactory?
Set MyDate = DotNetFactory.CreateInstance("System.DateTime").Now
msgbox MyDate.ToShortDateString()
錯誤是當它導致錯誤「對象需要:‘DotNetFactory’」
我做的.Net之前從VBScript調用,但他們都沒有使用DotNetFactory。代碼如
Set coll = CreateObject("System.Collections.Queue")
不會導致錯誤。
我是否需要設置對DotNetFactory的引用?來自文章的文字
我們使用'System.DateTime'作爲類型名稱。 我們無需爲此指定程序集 ,因爲它屬於已加載的名稱空間'System' (mscorlib.dll)已加載的 。
讓我這麼認爲,因爲沒有任何東西是由我的腳本編輯器自動加載的。如果是這樣,我該怎麼做?我沒有使用IDE,只是一個文本編輯器,所以任何引用都必須由腳本自身加載。
更新:正如Motto指出的那樣,沒有一些額外的工作就無法完成。文章引用指出,不是DotNetFactory
包含在mscorlib中。
@莫蒂 - 是的,不幸的是似乎是這樣。我相信這篇文章講述了生活在mscorlib中的System.DateTime,而不是DotNetFactory。鑑於此,是否有方法通過純VBScript創建System.DateTime實例? CreateObject爲System.DateTime導致錯誤,但對System.Collections.ArrayList沒有問題。我沒有太多的.NET經驗,所以這讓我有點沮喪。 – ssakl 2010-01-01 06:28:40
它取決於.NET類是否可見,否則無法直接從本機(如VBS)代碼創建它們。你可以編寫自己的COM類可見的.NET類,並通過反射創建類型。 – Motti 2010-01-01 13:57:57
@Motti - 感謝您的提示。出於我的目的,我想我可以堅持VBScript的內置日期/時間函數。 – ssakl 2010-01-03 18:19:09