Создание файла CS из файла прото?

Это может показаться очень простым, но я новичок в C#, так что справочные документы Google не так понятны для меня.

Они учат:

protoc --proto_path=bar --csharp_out=src --csharp_opt=base_namespace=Example player.proto

и их пример

protoc --proto_path=src --csharp_out=build/gen --csharp_opt=file_extension=.g.cs,base_namespace=Example src/foo.proto

Итак, мой список основных вопросов:

  • Для proto_path, это начинается с верхнего уровня папки программы

  • Что такое опция 'bar', это всегда 'src'?

  • Что такое опция 'src', это всегда 'build/gen'?

  • Это копируемое? '--csharp_opt=file_extension=.g.cs,base_namespace=MyProgram src/MyProtoFile.proto'

1 ответ

Для proto_path, это начинается с верхнего уровня папки программы

--proto_path - это место, где существуют прото-файлы, которые вы хотите преобразовать в cs-файлы. Это относительно исполняемого файла protoc, но также может быть установлено в определенном месте, например --proto_path="C:/myprotofiles/"

Что такое опция 'bar', это всегда 'src'?

"бар" не вариант. "foo" и "bar" обычно используются в качестве заполнителей при предоставлении общих инструкций ( https://en.wikipedia.org/wiki/Foobar)

Что такое опция 'src', это всегда 'build/gen'?

SRC не вариант. src является заполнителем для каталога. Вы замените "src" каталогом, содержащим ваши прото файлы.

--csharp_out - это место, куда вы хотите выводить файлы C#. Это также относится к исполняемому файлу protoc, но также может быть установлено в определенном месте, например, --csharp_out="C:/mycsfiles/"

Это копируемое? '--csharp_opt=file_extension=.g.cs,base_namespace=MyProgram src/MyProtoFile.proto'

Я не совсем уверен в вашем вопросе здесь. Это две части.

--csharp_opt устанавливает параметры. В этом примере задается для file_extension значение.g.cs (поэтому выходные файлы будут somecsfile.g.cs), а также для пространства base_name указывается "MyProgram", чтобы все сгенерированные классы находились в пространстве имен MyProgram.

"src / MyProtoFile.proto" или "src / foo.proto" в примере Google - это файл прото в каталоге / src. В нашем примере мы заменили бы это на "c:/myprotofiles/myprotofile.proto"

Итак, мы бы получили:

protoc --proto_path="C:/myprotofiles/" --csharp_out="C:/mycsfiles/" --csharp_opt=file_extension=.g.cs,base_namespace=MyProtoFileNamespace "c:/myprotofiles/myprotofile.proto"

Установка явных путей не обязательна, но, надеюсь, прояснит ситуацию (по крайней мере, для пользователей Windows!)

Другие вопросы по тегам