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

使用Protobuf 25.2编译带Map的.proto文件出现CS1061错误求助

解决protoc 25.2编译C# MapField的CS1061错误

问题原因

protoc 25.2生成的C#代码依赖Google.Protobuf 25.2.x版本的Runtime包,若你当前项目引用的Google.Protobuf版本过低(比如适配protoc 3.4.0的旧版本),会导致生成代码中调用的MergeFrom方法在低版本Runtime的MapField中不存在,从而触发CS1061错误。

解决步骤

  • 更新Google.Protobuf NuGet包版本
    在C#项目中,将Google.Protobuf NuGet包升级至与protoc一致的25.2.x版本,确保生成代码与Runtime包兼容。例如在Package Manager Console执行:

    Install-Package Google.Protobuf -Version 25.2.0
    

    也可通过NuGet包管理器可视化界面搜索并完成更新。

  • 确保命名空间引用正确
    新版MapField的相关方法定义在Google.Protobuf.Collections命名空间下,若生成的代码未自动添加该引用,手动在文件顶部补充:

    using Google.Protobuf.Collections;
    
  • 重新生成C#代码
    使用protoc 25.2重新编译proto文件,避免混合不同版本生成的代码,执行命令示例:

    protoc --csharp_out=./pb ./your_proto_file.proto
    

验证

完成上述操作后重新编译C#项目,CS1061错误即可消除,因为新版Runtime包的MapField已包含生成代码所需的MergeFrom方法实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:33:18