You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过项目文件启用protobuf-net.BuildTools的OneOf支持

解决方案

  • 优先升级NuGet包:3.0.101版本的protobuf-net.BuildTools存在已知的oneof枚举生成缺陷,将protobuf-net和protobuf-net.BuildTools升级至3.2.30及以上的3.x稳定版即可修复csproj全局OneOf属性不生效的问题。
  • 若不便升级版本,可在.proto文件头部添加配置声明,优先级高于csproj配置,旧版本也可兼容:
syntax = "proto3";
// 新增以下两行配置
import "protobuf-net/protobuf-net.proto";
option (protobuf_net.file).oneof = enum;

message ExampleMessage {
    oneof SomeGroup {
        int32 foo = 1;
        string bar = 3;
        double baz = 4;
    }
}
  • 若上述操作后仍未生成枚举,需要检查csproj是否存在项配置冲突:默认配置下项目会自动扫描所有.proto文件作为Protobuf项,和你手动添加的AdditionalFiles配置冲突,在csproj的<PropertyGroup>节点下添加以下配置关闭自动扫描即可:
<Protobuf_AutoInclude>false</Protobuf_AutoInclude>

完成配置后清理项目并重新生成,就能在生成的ExampleMessage类中看到对应的SomeGroup.OneOfCase枚举定义。

内容的提问来源于stack exchange,提问作者Charlie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:57:02