Может ли кто-нибудь мне помочь, как определить, установлен ли на компьютере какой-либо синтаксический анализатор MSXML. Я искал запись в реестре, но не смог ее получить. Я пишу приложение VB.NET. Заранее спасибоПрактическое руководство. Программно определить, установлен ли синтаксический анализатор MSXML (версия 3+) или нет.
ответ
Один из способов сделать это - создать экземпляр одного из объектов 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 код плох :)
Я бы проверял, есть ли эти files exists и проверьте версию.
Или я хотел бы использовать this
Или, может быть, есть лучший способ?
Спасибо за ответ. Вторая опция выглядит полезной, но я не понимаю, как ее использовать в приложении VB.NET. Я хочу выполнить это в фоновом режиме. –
Если возможно, укажите MSXML 3.0. Это included in all Windows operating systems starting with Win2k SP4, поэтому обычно нет необходимости проверять наличие.
В любом случае, если вы используете VB.NET, попробуйте вместо этого использовать System.Xml namespace. Это часть инфраструктуры .net, которая в любом случае необходима вашему приложению VB.NET.
Microsoft рекомендует настроить MSXML6 по умолчанию, поскольку MSXML3 является предпочтительным резервом (это рекомендуемый совет в той записи блога, с которой вы связались). –
@ Крис: Спасибо, что указали это! Я могу понять, что MS хочет, чтобы люди использовали новую библиотеку, но, лично, если я не нуждаюсь в каких-либо функциях MSXML6, я бы придерживался MSXML3, поскольку (a) MSXML6 не предварительно установлен на WinXP, (б) WinXP по-прежнему широко используется, и (c) это означает, что мне придется тестировать и поддерживать * дважды * код (как MSXML6, так и версию MSXML3). – Heinzi
Одна вещь, чтобы заметить, что The use of MSXML is not supported in .NET applications поскольку GC внутри MSXML не совместим с .NET.
ok.Пожалуйста, исправьте меня, если я ошибаюсь. Итак, вы хотите сказать, что если на моем компьютере установлена какая-либо версия синтаксического анализатора MSXML, этот сегмент кода создаст экземпляр. Если на моем компьютере не установлен синтаксический анализатор MSXML, он не будет создавать экземпляр и выдаст исключение. –
Да, в принципе, если в этом случае MSXML3 не установлен, вы получите исключение. Вы также можете выбрать различные прогиды для выбора определенных версий для тестирования. Вы могли бы просто искать прогиды в реестре (скажем, HKCR \ MSXML2.DOMDocument), но это не обязательно докажет правильность установки DLL. – tyranid