繁体   English   中英

在以4.6为目标的应用程序中进行链接时,3.5程序集中的DTD验证失败

[英]DTD validation in a 3.5 assembly fails when linked in an application targeting 4.6

我有一个用c#编写的程序集,它对输入字符串进行DTD验证。 它使用XMLReaderSettings.ValidationTpe = ValidationType.DTD和XMLReaderSettings.ProhibitDtd = false。 在目标为2.0、3.5、4.0、4.5的应用程序中链接此程序集时,XML验证可以正常工作,但是在目标为4.6的应用程序中,XML验证不再起作用(禁止进行DDT处理)。 我知道ProhibitDtd在4.0中已弃用,而推荐使用DtdProcessing = DtdProcessing.Parse。

除非我将程序集目标为4.0,否则不能使用DtdProcessing.Parse。 我的问题是:1.如何继续以3.5为目标并使其在以4.6及更高版本为目标的应用程序中工作? 2.如果必须以4.0为目标,那么它将如何影响使用4.0程序集针对2.0的应用程序?

我已经解决了这个问题。 现在,我可以继续以我的程序集为目标3.5,并将其链接到目标为4.6及更高版本的应用程序时,它仍然能够使用DTD验证XML。

我必须将XmlReaderSettings.XmlResolver显式设置为新的XmlUrlResolver()才能使其正常工作。 我想如果不将其设置为新的XmlUrlResolver(),4.6框架会在运行时使用不允许DTD验证的解析器对其进行设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM