У меня есть следующий код, который прекрасно работает с Visual Studio 2010,
string path = @"Path_to_XML.xml";
FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read);
XmlReaderSettings settings = new XmlReaderSettings
{
ValidationType = ValidationType.Schema
};
settings.Schemas.Add(@"REQUIRED_NAMESPACE",
@"REQUIREDSCHEMA.xsd");
Но при использовании с Visual Studio 2017 не удается добавить схему; т.е., Сбои в строке,
settings.Schemas.Add(...)
с нижеследующим исключением,
$ exception {"Неверный параметр. (Исключение из HRESULT:
0x80070057 (E_INVALIDARG)) "} System.ArgumentException
в
System.Security.Policy.PEFileEvidenceFactory.GetLocationEvidence (SafePEFileHandle
peFile, SecurityZone & zone, StringHandleOnStack retUrl) в
System.Security.Policy.PEFileEvidenceFactory.GenerateLocationEvidence ()
в System.Security.Policy.PEFileEvidenceFactory.GenerateEvidence (Тип
proofType) в
System.Security.Policy.AssemblyEvidenceFactory.GenerateEvidence (Тип
proofType) в
System.Security.Policy.Evidence.GenerateHostEvidence (Тип типа,
Boolean hostCanGenerate) в
System.Security.Policy.Evidence.GetHostEvidenceNoLock (тип) в
System.Security.Policy.Evidence.GetHostEvidence (Тип типа, Булево
markDelayEvaluatedEvidenceUsed) в
System.Security.Policy.AppDomainEvidenceFactory.GenerateEvidence (Тип
proofType) в
System.Security.Policy.Evidence.GenerateHostEvidence (Тип типа,
Boolean hostCanGenerate) в
System.Security.Policy.Evidence.GetHostEvidenceNoLock (тип) в
System.Security.Policy.Evidence.RawEvidenceEnumerator.MoveNext () в
System.Security.Policy.Evidence.EvidenceEnumerator.MoveNext () в
System.Configuration.ClientConfigPaths.GetEvidenceInfo (AppDomain
appDomain, String exePath, String & typeName) в
System.Configuration.ClientConfigPaths.GetTypeAndHashSuffix (AppDomain
appDomain, String exePath) в
System.Configuration.ClientConfigPaths..ctor (String exePath, Boolean
includeUserConfig) в
System.Configuration.ClientConfigPaths.GetPaths (String exePath,
Boolean includeUserConfig) в
System.Configuration.ClientConfigurationHost.RequireCompleteInit (IInternalConfigRecord
запись) в
System.Configuration.BaseConfigurationRecord.GetSectionRecursive (String
configKey, Boolean getLkg, Boolean checkPermission, Boolean
getRuntimeObject, Boolean requestIsHere, Объект и результат, Объект &
resultRuntimeObject) в
System.Configuration.BaseConfigurationRecord.GetSection (String
configKey) в
System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection (String
sectionName) в
System.Configuration.ConfigurationManager.GetSection (String
sectionName) в
System.Xml.XmlConfiguration.XmlReaderSection.get_ProhibitDefaultUrlResolver ()
в System.Xml.Schema.Parser..ctor (SchemaType schemaType, XmlNameTable
nameTable, SchemaNames schemaNames, ValidationEventHandler
eventHandler) в System.Xml.Schema.XmlSchemaSet.ParseSchema (String
targetNamespace, читатель XmlReader) в
System.Xml.Schema.XmlSchemaSet.Add (String targetNamespace, String
schemaUri)
Как решить эту проблему?
Примечание. Единственное отличие, которое я вижу, заключается в том, что System.XML.dll относится к .Net 4.6.2 в VS 2017, а в VS 2010 - к .Net 4.0.