我目前正在使用一个Protobuf插件来生成一些定制的C#代码给定一组Protobuf文件。 它在Linux上运行良好,我也想在Windows上运行它,以便直接从我的Visual Studio项目生成此代码。
以下是我正在使用的命令行(失败):
path\to\protoc.exe --plugin=protoc-gen-my-plugin=path\to\my-plugin.py --my-plugin_out=output\path\gen my_proto.proto
这是我得到的错误:
–my-plugin_out:protoc-gen-my-plugin:%1不可用应用程序Win32 valide。
我有Python 2.7.11安装,它在我的path。 我也尝试使用x86和x64可执行文件运行protoc.exe。
有什么限制我不知道或者我错过了什么?
我能够通过封装python插件在.bat文件中解决我的问题。 这是我使用的代码:
@echo off chdir path\to\my-plugin python -u my-plugin.py
运行python脚本时的“-u”选项非常重要,否则标准输入将被缓冲。 当protoc通过stdin将所有的输入传递给插件(.proto文件来解析)时,这是非常重要的。 而输出是由插件写入标准输出,所以没有问题。
这里是我的插件执行protoc的最后一个命令:
path\to\protoc.exe --plugin=protoc-gen-my-plugin=redirect.bat --my-plugin_out=output\path\gen my_proto.proto