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

C#中如何跨项目正确导入Proto文件?

跨项目Protobuf导入编译错误的解决办法

1. 先搞定项目依赖

直接给Data项目添加对Common项目的项目引用,别只搞路径配置:右键Data项目 → 添加 → 项目引用 → 勾选Common.csproj。编译时需要Common项目的编译输出作为依赖,光加路径没用。

2. 配置Common项目的Protobuf文件

修改Common.csproj,把common.proto设为共享的消息定义文件,不生成Grpc服务:

<ItemGroup>
  <Protobuf Include="Protos\common.proto" GrpcServices="None" />
</ItemGroup>

3. 正确配置Data项目的Protobuf导入路径

在Data.csproj里,给UserService.proto指定导入目录,同时确保项目引用存在:

<!-- 项目引用必须加 -->
<ItemGroup>
  <ProjectReference Include="..\Common\Common.csproj" />
</ItemGroup>

<!-- 配置Protobuf导入路径 -->
<ItemGroup>
  <Protobuf Include="UserService.proto" GrpcServices="Server">
    <!-- 用相对路径指向Common的Protos目录,或者用$(SolutionDir)变量确保路径准确 -->
    <AdditionalImportDirs>../Common/Protos</AdditionalImportDirs>
  </Protobuf>
</ItemGroup>

4. 检查proto文件的导入语句

UserService.proto里的导入要对应配置的路径,别写全路径:

import "common.proto";

5. 清理重建解决缓存问题

  • 执行Build → Clean Solution清理整个解决方案
  • 手动删除两个项目下的bin、obj文件夹
  • 再执行Build → Rebuild Solution重新生成

额外排查点

  • 确保两个项目的.NET版本完全一致
  • 检查common.proto里的SimpleResponse定义无语法错误
  • 两个项目安装的Grpc.Tools包版本必须相同

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:45:19