0

我有以下代码与 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(Type evidenceType) 在 System.Security .Policy.AssemblyEvidenceFactory.GenerateEvidence(Type evidenceType) at System.Security.Policy.Evidence.GenerateHostEvidence(Type type, Boolean hostCanGenerate) at System.Security.Policy.Evidence.GetHostEvidenceNoLock(Type type) at System.Security.Policy.Evidence。 GetHostEvidence(Type type, Boolean markDelayEvaluatedEvidenceUsed) at System.Security.Policy.AppDomainEvidenceFactory.GenerateEvidence(Type evidenceType) at System.Security.Policy.Evidence.GenerateHostEvidence(Type type,Boolean hostCanGenerate) 在 System.Security.Policy.Evidence.GetHostEvidenceNoLock(Type type) 在 System.Security.Policy.Evidence.RawEvidenceEnumerator.MoveNext() 在 System.Security.Policy.Evidence.EvidenceEnumerator.MoveNext() 在 System.Configuration。 System.Configuration.ClientConfigPaths.GetTypeAndHashSuffix(AppDomain appDomain, String exePath) 在 System.Configuration.ClientConfigPaths..ctor(String exePath, Boolean includeUserConfig) 在 System.Configuration.ClientConfigPaths 的 ClientConfigPaths.GetEvidenceInfo(AppDomain appDomain, String exePath, String& typeName) .GetPaths(String exePath, Boolean includeUserConfig) 在 System.Configuration.ClientConfigurationHost.RequireCompleteInit(IInternalConfigRecord 记录) 在 System.Configuration.BaseConfigurationRecord。GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& 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 reader) 在 System.Xml.Schema。XmlSchemaSet.Add(字符串 targetNamespace,字符串 schemaUri)

如何解决这个问题?

注意:我看到的唯一区别是 System.XML.dll 是从 VS 2017 中的 .Net 4.6.2 引用的,而在 VS 2010 中,它是从 .Net 4.0 引用的。

4

0 回答 0