C# protobuf net into.proto生成枚举冲突?

C# protobuf net into.proto生成枚举冲突?,c#,c++,.net,protocol-buffers,protobuf-net,C#,C++,.net,Protocol Buffers,Protobuf Net,在C#中,我们在proto中有名称空间。我们从protobuf net获得的proto中没有任何名称空间。因此,问题是如何使protobuf net生成(并在内部使用).proto文件和namespacs/packages 当我们解析了所有的项目,使Proto文件连接C++应用程序到我们的C应用程序时,我们得到了大量的 enum AnimationCode { None = 0; Idle = 1; //... } 及 所以当我们把这个统一的project.proto文件交给

在C#中,我们在proto中有名称空间。我们从protobuf net获得的proto中没有任何名称空间。因此,问题是如何使protobuf net生成(并在内部使用).proto文件和namespacs/packages

当我们解析了所有的项目,使Proto文件连接C++应用程序到我们的C应用程序时,我们得到了大量的

enum AnimationCode {
   None = 0;
   Idle = 1;
   //...
}

所以当我们把这个统一的project.proto文件交给protogen编译器时,我们得到了大量的数据

enum AnimationCode {
   None = 0;
   Idle = 1;
   //...
}
枚举类型“SessionStateCode”没有名为“None”的值

注意枚举值使用C++范围规则,意味着枚举值 是他们类型的兄弟姐妹,而不是孩子

和没有C++代码。< /P> 重点是使编码的C#消息至少可以从C++中读取。

您尝试过这个吗

package MyNamespace{
    enum AnimationCode {
       None = 0;
       Idle = 1;
       //...
    }
}

protobuf net中目前没有任何代码来执行自动名称冲突修复,尽管我很想知道您是否有任何建议。另一种选择是:

    enum AnimationCode {
        [ProtoEnum(Name="AnimationCode_None")]
        None = 0,
        Idle = 1
    }
这里,.proto在生成scema时将使用
AnimationCode\u None
;事实上,它将是:

enum AnimationCode {
   AnimationCode_None = 0;
   Idle = 1;
}

我已经检查了
元类型
/
ValueMember
API,目前似乎很难在运行时设置
.Name
,但在新版本中可以很容易地解决这个问题(如使用)如果您更喜欢在运行时设置它们,而不是用属性修饰它们。

问题是-我们有大量的代码,这实际上不会阻止C对读取此类消息的支持吗?点是从C++中获取PROTO文件,它将与C++谷歌原型Bufff兼容。因此,编码的C#消息至少可以从C++中读取,因此会出现问题-默认值等。是否会对此错误进行正式修复?@myWall-您有什么建议?自动命名
EnumName\u EnumField
for.protogeneration@myWallJSON我当然可以选择-我不认为我应该改变默认值,苏格拉威尔:炉排!)我们会很快在任何地方看到它吗?protobuf网络库是否计划在近期内进行任何更改?