gpt4 book ai didi

c# - 如何在 proto 文件导入语句中使用相对路径?

转载 作者:行者123 更新时间:2023-12-04 06:00:08 28 4
gpt4 key购买 nike

我正在使用 protobuf-net 的 ProtoBufTool 自定义工具从 .proto 文件生成 C# 类。到目前为止,我一直无法让原型(prototype)文件中的 import 语句使用相对路径。以下是我的情况:

我的项目中有 2 个 proto 文件,排列如下:

directory layout

用户.proto:

package Models;

message User {
required int32 ID = 1;
required string Username = 2;
// etc...
}

用户搜索.proto:

package Models.Messages;

import "../User.proto";

message UserSearchRequest {
optional string Query = 1;
optional int32 Limit = 2;
optional int32 Offset = 3;
}

message UserSearchResult {
required int32 NumResults = 1;
required int32 NumReturned = 2;
repeated User Users = 3;
}

User.cs 文件生成正常,但在 UserSearch 文件上生成失败。这是我在“错误列表”窗口中看到的。

  • 自定义工具错误:../User.proto:找不到文件。
  • 自定义工具错误:UserSearch.proto:导入“../User.proto”未找到或有错误。
  • 自定义工具错误:UserSearch.proto:22:18:未定义“用户”。

郑重声明,我曾尝试使用 \\ 而不是 /,但我得到了相同的结果。如果两个 proto 文件都在同一个目录中并且我删除了 ../,import 语句也能正常工作,但这不是我想要安排文件的方式。

如何在导入语句中获取相对路径?

最佳答案

简短的回答 - 我必须在与 protoc(谷歌的 .proto 解析器)交谈时使用的工具和路径存在错误。我将不得不查看并修复它。

更尴尬的回答; 如果您不介意使用命令行工具,您可以使用 google 的协议(protocol)将 .proto 编译为二进制文件,使用 --descriptor_set_out={file},使用任何 --proto_path 您选择的选项(到目前为止,这纯粹是 Google 工具);然后,您可以将该编译的描述符集作为输入传递给 protogen(它处理任一格式)。

这对于脚本构建来说是可以的,但您不希望手动完成!我将尝试查看工具有什么问题。添加到列表中。

关于c# - 如何在 proto 文件导入语句中使用相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9011372/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com