Сбой XMLSChemaSet.Add в Visual studio 2017 - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть следующий код, который прекрасно работает с 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.

...