Создание файла 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!)