从 xsd 生成原型文件

generate proto file from xsd

我有一个 xsd 文件,我想从中生成原型文件。
首先,我使用 xsd.exe 从 xsd 文件生成 C# 类,现在我想生成原型文件。
我知道我必须使用 string proto = Serializer.GetProto<MyType>(); 但它似乎不起作用,因为自动生成的 C# 类 没有用属性装饰。
有没有其他方法可以在不将这些属性添加到生成的代码中的情况下生成原型文件?

protobuf-net 可以使用装饰有 [DataContract] / [DataMember] 的类型,只要 [DataMember] 包含合适的 Order = n 可选参数。根据记忆,xsd 确实包含这个, 但是 它从零开始 Order,因为 protobuf-net 想要从一开始(因为零不是protobuf 中的有效标签)。最简单的解决方法是创建第二个单独的文件以在 partial class:

中添加补丁
namespace TheSameNamespace {
    [ProtoContract(DataMemberOffset = 1)]
    partial class TheSameClass {}
}

这告诉 protobuf-net 向所有 [DataMember(Order = n)] 标记添加一个。之后:它应该可以工作。