簡體   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