Как разрешить локальные DTD без System.Xml.Utils.Dll (XmlPreloadedResolver)?
Вопрос
Я использую внешний DTD для проверки моих xml-файлов.Поскольку XmlReader, похоже, ищет DTD только в папке, где находится xml-файл, мне нужно каким-то образом сказать читателю, чтобы он заглянул в определенную папку, где находятся мои dtd.
Я использовал XmlPreloadedResolver для решения этой проблемы, но я не могу найти System.Xml.Utils.Dll в GAC.Разве это не стандартная сборка .NET framework?
Редактировать:Похоже, что эта DLL-библиотека зависит от установки silverlight.Есть ли другой способ использовать dtd для проверки, который находится в другой папке, чем сам XML-файл?
Решение
System.Xml.Utils.dll не является частью стандартной платформы .NET Framework.Он включен как часть Silverlight SDK.Если вы еще не установили его, вы можете сделать это отсюда: http://www.microsoft.com/downloads/details.aspx ?Идентификатор семейства=1ea49236-0de7-41b1-81c8-a126ff39975b&displaylang=ru
Как только вы его установите, сборка, на которую вы хотите ссылаться в своем проекте, будет находиться в разделе %PROGRAMFILES%\Microsoft SDKs\ Silverlight\v3.0\Libraries\ Client\
Эта сборка включает класс System.Xml.Resolvers.XmlPreloadedResolver
Другие советы
Согласно эта статья, System.Xml.Utils.dll
является "необязательно и будет включено в пакет (XAP) в зависимости от использования".
Похоже, эта сборка связана с Silverlight;на моем компьютере я только что нашел это внутри %ProgramFiles%\Microsoft SDKs\Silverlight\v?.0\Libraries\Client
каталоги
.netfx 4.0 включает в себя XmlPreloadedResolver в System.Xml.dll .Видишь http://msdn.microsoft.com/en-us/library/system.xml.resolvers.xmlpreloadedresolver.aspx для получения подробной информации.