2017-02-24 45 views
1

我正在使用Protobuf插件來生成一些定製的C#代碼,並給定一組Protobuf文件。它在Linux上運行良好,我也想在Windows上運行它,以便直接從我的Visual Studio項目生成此代碼。如何在Windows上運行protobuf python插件

這裏是我的(失敗)使用當前的命令行:

path\to\protoc.exe --plugin=protoc-gen-my-plugin=path\to\my-plugin.py --my-plugin_out=output\path\gen my_proto.proto 

這裏是我得到的錯誤:

- 我 - plugin_out:protoc-gen-我的插件:%1沒有應用程序Win32 valide。

我安裝了Python 2.7.11,它在我的路徑中。我也嘗試使用x86和x64可執行文件運行protoc.exe。

有什麼限制我不知道或者我錯過了什麼?

回答

2

我能通過將python插件封裝在.bat文件中解決我的問題。下面是我使用的代碼:

@echo off 
chdir path\to\my-plugin 
python -u my-plugin.py 

運行python腳本時使用「-U」選項是非常重要的,因爲否則的標準輸入將被緩衝。由於protoc通過stdin將所有輸入傳遞給插件(.proto文件進行解析),這非常重要。輸出由插件寫入stdout,所以沒有問題。

這裏是最後的命令與我的插件來執行protoc:

path\to\protoc.exe --plugin=protoc-gen-my-plugin=redirect.bat --my-plugin_out=output\path\gen my_proto.proto