【问题标题】:.Net SvcUtil: attributes must be optional.Net SvcUtil:属性必须是可选的
【发布时间】:2011-02-25 21:21:44
【问题描述】:

我正在尝试使用 SvcUtil.exe 而不是 Xsd.exe 生成 C# 代码类。后者给我带来了一些问题。

命令行:

SvcUtil.exe myschema.xsd /dconly /ser:XmlSerializer

这里描述并解决了几个 SvcUtil 问题: http://blog.shutupandcode.net/?p=761

我无法解决的一个问题是:错误:无法导入命名空间''中的类型'DatafieldDescription'。属性必须是可选的并且来自命名空间'http://schemas.microsoft.com/2003/10/Seri 化/'。要么更改架构,以便类型可以映射到数据协定类型,要么使用 ImportXmlType 或使用不同的序列化程序。 '

我变了

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

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

<xs:attribute name="Order">

但错误仍然存​​在。是否可以使用属性,或者我必须将它们全部删除(在这种情况下,本次执行结束)?

【问题讨论】:

    标签: .net xsd attributes code-generation svcutil.exe


    【解决方案1】:

    可以在此处找到答案和可能的解决方案: MSDN: Importing Schema to Generate Classes

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

    如:

    SvcUtil.exe myschema.xsd /dconly /ser:XmlSerializer /importXmlTypes
    

    不幸的是,这将导致这种代码:

    private System.Xml.XmlNode[] nodesField;
    

    问候, 米歇尔

    【讨论】:

    • +1:帮助我找出了我在使用 XMLSchemaSet.Compile() 时遇到的问题 ...
    猜你喜欢
    • 2011-11-28
    • 2011-07-13
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 2011-03-26
    • 2020-03-06
    • 2020-11-04
    • 1970-01-01
    相关资源
    最近更新 更多