2009-12-31 68 views
2

我一直在探索擴展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中。

回答

3

AFAIK DotNetFactory是QTP創建的對象,而不是mscorelib的一部分,你到Mikeb的回答評論說。因此,除非QTP公開了prog-id,否則您不能通過VBS文件從站點訪問它。

+0

@莫蒂 - 是的,不幸的是似乎是這樣。我相信這篇文章講述了生活在mscorlib中的System.DateTime,而不是DotNetFactory。鑑於此,是否有方法通過純VBScript創建System.DateTime實例? CreateObject爲System.DateTime導致錯誤,但對System.Collections.ArrayList沒有問題。我沒有太多的.NET經驗,所以這讓我有點沮喪。 – ssakl 2010-01-01 06:28:40

+0

它取決於.NET類是否可見,否則無法直接從本機(如VBS)代碼創建它們。你可以編寫自己的COM類可見的.NET類,並通過反射創建類型。 – Motti 2010-01-01 13:57:57

+0

@Motti - 感謝您的提示。出於我的目的,我想我可以堅持VBScript的內置日期/時間函數。 – ssakl 2010-01-03 18:19:09

0

你可以創建一個DotNetFactory,如:

Set dnf = CreateObject("Qualified.Name.To.DotNetFactory") 
dnf.CreateInstance("System.DateTime") 
+1

@Mikeb - 由於DotNetFactory存在於mscorlib.dll中,我如何找到它的限定名?我試圖將mscorlib.dll複製到與腳本相同的目錄中,以防萬一它是一個路徑問題,但同樣的錯誤仍然存​​在。搜索MSDN和Google不會產生有關DotNetFactory的可用結果。 – ssakl 2009-12-31 17:28:39

相關問題