.Net SvcUtil:属性必须是可选的

.Net SvcUtil:属性必须是可选的,.net,xsd,attributes,code-generation,svcutil.exe,.net,Xsd,Attributes,Code Generation,Svcutil.exe,我试图用SvcUtil.exe而不是Xsd.exe生成C#代码类。后者给了我一些问题 命令行: SvcUtil.exe myschema.xsd /dconly /ser:XmlSerializer 这里描述并解决了几个SvcUtil问题: 我无法解决的一个问题是:错误:无法导入命名空间“”中的类型“DatafieldDescription”。属性必须是可选的,并且来自命名空间的 "。更改架构,使类型可以映射到数据协定类型,或者使用ImportXmlType或使用其他序列化程序。 " 我变了

我试图用SvcUtil.exe而不是Xsd.exe生成C#代码类。后者给了我一些问题

命令行:

SvcUtil.exe myschema.xsd /dconly /ser:XmlSerializer
这里描述并解决了几个SvcUtil问题:

我无法解决的一个问题是:错误:无法导入命名空间“”中的类型“DatafieldDescription”。属性必须是可选的,并且来自命名空间的 "。更改架构,使类型可以映射到数据协定类型,或者使用ImportXmlType或使用其他序列化程序。 "

我变了

<xs:attribute name="Order" use="required">




但错误依然存在。是否可以使用属性,或者我必须全部删除它们(在这种情况下,此练习已结束)?

答案和可能的解决方案可在此处找到:

具体: XsdDataContractImporter支持模式的有限子集。如果存在不受支持的架构构造(,例如XML属性),导入尝试将失败,并出现异常。但是,将ImportXmlType属性设置为true会扩展支持的架构范围。当设置为true时,XsdDataContractImporter生成实现IXmlSerializable接口的类型。这允许直接访问这些类型的XML表示

例如:

SvcUtil.exe myschema.xsd /dconly /ser:XmlSerializer /importXmlTypes
不幸的是,这将导致这种代码:

private System.Xml.XmlNode[] nodesField;
问候,,
Michel

+1:帮助我解决了使用
XMLSchemaSet.Compile()时遇到的一个问题。。。
SvcUtil.exe myschema.xsd /dconly /ser:XmlSerializer /importXmlTypes
private System.Xml.XmlNode[] nodesField;