我有一些.proto文件,用于编译Java,C 和C#中的类。对于Java和C ,我使用Protoc编译器,对于C#,我使用Protogen。用于创建Java / C ++类的脚本是
@ECHO OFF SET SRC_DIR=%~dp0 REM Make Java and C++ SET JAVA_OUT_DIR=%SRC_DIR%\..\taurus-messages-java\src\main\java if not exist %JAVA_OUT_DIR% ( mkdir %JAVA_OUT_DIR% ) SET CPP_OUT_DIR=%SRC_DIR%\..\taurus-messages-cpp if not exist %CPP_OUT_DIR% ( mkdir %CPP_OUT_DIR% ) protoc -I=%SRC_DIR% --java_out=%JAVA_OUT_DIR% --cpp_out=%CPP_OUT_DIR% %SRC_DIR%taurus-mux.proto protoc -I=%SRC_DIR% --java_out=%JAVA_OUT_DIR% --cpp_out=%CPP_OUT_DIR% %SRC_DIR%taurus-backtest.proto
对于C#类,我有
@ECHO OFF SET WORK_DIR=%~dp0 SET OUT_DIR=%WORK_DIR%\Messages SET SRC_DIR=%WORK_DIR%\..\..\..\Taurus\trunk\taurus-messages-proto\ if not exist %OUT_DIR% ( mkdir %OUT_DIR% ) cd %SRC_DIR% protogen -p:detectMissing -i:taurus-backtest.proto -o:%OUT_DIR%\TaurusBacktest.cs protogen -p:detectMissing -i:taurus-mux.proto -o:%OUT_DIR%\TaurusMux.cs cd %WORK_DIR%
这两个脚本都引用.proto文件(当然是;])。我添加了上面的C#脚本-p:detectMissing,以生成允许我测试是否指定了字段的属性;该选项*Specified将为其中的所有字段创建IsRequired = false。
-p:detectMissing
*Specified
IsRequired = false
我的问题很简单,我想确保C#,C ++和Java类保持对齐,但是对于C#,我需要在-p:detectMissingProtogen中使用option,使用Protoc的等效选项是什么?
谢谢你的时间。
如果我正确理解了这个问题,那么实际上没有“等效”选项-它们是具有不同预期用途的不同工具。如果您的主要驱动程序是按需使用的,则可能需要查看protobuf- csharp-port,它在移至C#时仍保持非常相似的用法。相比之下,protobuf-net并没有尝试提供与google相同的API- 它充当惯用的.NET序列化程序,碰巧以protobuf格式讲话。