2009-12-22 34 views

回答

0

您可以執行此操作的一種方法是在您的代碼中創建一個MSXML對象的實例。例如

Dim t As Type 
Dim o As Object

' If this code causes an exception the object doesn't exist t = Type.GetTypeFromProgID("MSXML2.DOMDocument") o = Activator.CreateInstance(t); System.Runtime.InteropServices.Marshal.ReleaseComObject(o)

我道歉,如果我的vb.net代碼是壞:)

+0

好的。如果我弄錯了,請糾正我。所以,你的意思是說,如果我的機器上安裝了任何版本的MSXML解析器,這段代碼將創建一個實例。如果MSXML分析器沒有安裝在我的機器上,它不會創建一個實例並會拋出異常。 – 2009-12-22 16:46:28

+0

是的,基本上如果在這種情況下MSXML3沒有安裝,那麼你會得到一個異常。您還可以選擇不同的程序來選擇特定版本進行測試。你也可以在註冊表中查找程序(比如說HKCR \ MSXML2.DOMDocument),但這並不一定證明DLL是正確安裝的。 – tyranid 2009-12-23 14:31:20

0

我會檢查這些files exists並檢查版本。

或者我會用this

或者,也許有更好的辦法嗎?

+0

感謝您的回覆。第二個選項看起來很有用,但我沒有得到如何在VB.NET應用程序中使用它。我想在後臺執行此操作。 – 2009-12-22 12:41:30

0

如果可能,則以MSXML 3.0爲目標。這是included in all Windows operating systems starting with Win2k SP4,所以通常不需要檢查它的存在。

無論如何,如果您使用VB.NET,請考慮使用System.Xml namespace來代替。它是.net框架的一部分,無論如何您的VB.NET應用程序都需要它。

+1

默認情況下,Microsoft建議將MSXML6作爲首選回退(這是您已鏈接到的該博客條目中的推薦建議)。 – 2009-12-22 14:35:21

+0

@Chris:謝謝你指出!我可以理解MS希望人們使用新的庫,但是,如果我不需要*任何MSXML6功能,我會堅持使用MSXML3,因爲(a)MSXML6沒有預先安裝在WinXP上, (b)WinXP仍然被廣泛使用,並且(c)這意味着我將不得不測試和維護兩次*代碼(MSXML6和MSXML3版本)。 – Heinzi 2009-12-22 14:45:19

相關問題