protogen: создать файл cs

Я пытаюсь использовать Protogen для создания классов C#, это мой синтаксис

 <Exec WorkingDirectory="..\..\ProtoFiles" Command="$(3rdParty)\protobuf\protobuf-net\protogen.exe  --proto_path:ClientsList.proto --csharp_out:ClientsList.cs" />

но не созданы классы C#

Когда я использовал тот же прототип для создания классов C++, все работало отлично (мне нужно было добавить syntax="proto2"; я не знаю, может ли это повлиять на часть C#)

если я запустил его вручную: C:\3rdParty\protobuf\protobuf-net>protogen.exe --proto_path:ClientsList.proto --csharp_out:ClientsList.cs

Использование: protogen [ОПЦИЯ] PROTO_FILES Анализировать PROTO_FILES и генерировать вывод на основе указанных опций:

-IPATH, --proto_path= ПУТЬ Укажите каталог, в котором следует искать импорт. Можно указывать несколько раз; каталоги будут просматриваться по порядку. Если не указан, используется текущий рабочий каталог.

--version Показать информацию о версии и выйти.

......

Обратите внимание, что PROTO_FILES может быть .proto или **/.proto (рекурсивный), когда используется одно место импорта, для обработки всех найденных файлов схемы. В рекурсивном режиме импорт из текущего каталога также может быть указан только по имени.

1 ответ

Решение

Параметр csharp_out - это папка, а не файл, и это не то, как вы используете proto_path (опять же, папку); и это =не : - в вашем случае вы, вероятно, захотите:

protogen --csharp_out=. ClientsList.proto

Обратите внимание, что синтаксис намеренно является зеркалом protoc синтаксис командной строки.

Тем не мение! Существует также пакет MSBuild, который может упростить работу вместо вашей собственной задачи, и я работаю над реализацией "генераторов", что означает нулевую настройку: просто добавьте.proto и запустите.

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