在 net core 中从 xsd 文件生成一个 class

Generate a class from xsd file in net core

我需要从 net core 中的 xsd 生成 class。 在 dotnet 标准中,我使用了命令行 xsd filename.xsd /c. 但是我如何在 net core 中创建这个 class 。 有人知道怎么做吗?

当我添加由 xsd.exe 生成的 class 时,我遇到了几个错误。

示例

    Error   CS0234  The type or namespace name 'SerializableAttributeAttribute' does not exist in the namespace 'System' (are you missing an assembly reference?)


Error   CS0234  The type or namespace name 'DesignerCategoryAttribute' does not exist in the namespace 'System.ComponentModel' (are you missing an assembly reference?) 

Error   CS0234  The type or namespace name 'XmlTypeAttributeAttribute' does not exist in the namespace 'System.Xml.Serialization' (are you missing an assembly reference?)

Error   CS0246  The type or namespace name 'AnonymousType' could not be found (are you missing a using directive or an assembly reference?) 

autogen 文件中 class 的属性

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]

实际上没有办法,但如果您看到 this 它是未来 .net 核心版本的一部分(2017 年第二季度发布的 .Net Core 1.2)。

如果您需要更多信息,请参阅此 discuss and specially this point

我现在已经通过向我的项目添加 nugets 解决了这个问题。

  • System.Xml.XmlSerializer

解决方案:删除除 DesignerCategoryAttribute 之外的序列化属性问题

  • Newtonsoft.json

解决方案:删除 DesignerCategoryAttribute

现在可以编译 xsd.exe 生成的 class 并在网络核心中使用它

netstandard2.0 可以编译xsd.exe 个生成的文件没有问题