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

.NET 7 gRPC Transcoding报错:找不到annotation.proto与http.proto

解决.NET 7 gRPC Transcoding编译时找不到google/api/annotations.proto的问题

编译报错的核心原因是proto文件的路径结构不匹配导入语句,或者项目未正确配置proto文件的解析路径,以下是具体解决步骤:

  • 修正文件目录结构
    确保annotations.proto和http.proto的存放路径与导入语句一致:在项目的Protos目录下创建google/api子文件夹,将两个proto文件放入该子目录,最终路径应为Protos/google/api/annotations.proto,这样proto里的import "google/api/annotations.proto";语句才能被正确解析。

  • 配置项目文件(.csproj)
    在项目文件中添加或调整Protobuf项的配置,确保所有proto文件被正确识别,同时指定ProtoRoot为Protos,让编译器能正确定位导入的文件:

    <ItemGroup>
      <!-- 主业务proto文件 -->
      <Protobuf Include="Protos\cache.proto" GrpcServices="Server" ProtoRoot="Protos" />
      <!-- google api相关proto文件,无需生成服务代码 -->
      <Protobuf Include="Protos\google\api\*.proto" GrpcServices="None" ProtoRoot="Protos" />
    </ItemGroup>
    
  • 验证proto文件内容
    检查annotations.proto的导入语句是否正确,官方标准内容开头应为:

    import "google/api/http.proto";
    option java_multiple_files = true;
    option java_outer_classname = "AnnotationsProto";
    option java_package = "com.google.api";
    option objc_class_prefix = "GAPI";
    

    确保http.proto也是官方提供的正确版本,无语法错误。

  • 清理重建项目
    执行Visual Studio的「清理解决方案」操作,再重新生成项目,避免旧缓存导致的路径识别问题。

替代方案:使用NuGet包自动引入
如果不想手动管理这些proto文件,可以直接安装NuGet包Google.Api.CommonProtos,它会自动将官方的google/api下的proto文件引入项目,无需手动添加文件。执行以下命令安装:

dotnet add package Google.Api.CommonProtos

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:01:15