2017-02-24 9 views
1

私は現在、Protobufファイルのセットを与えられたカスタムC#コードを生成するためにProtobufプラグインを使用しています。これはLinux上で正常に動作しています。私はVisual Studioプロジェクトから直接このコードを生成するために、Windows上でも実行したいと思います。ここでWindowsでprotobufのPythonプラグインを実行するには

は、私が現在使用して(失敗した)午前コマンドラインです:

--my-plugin_out:protoc-gen-

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:%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がすべての入力をプラグイン(パースする.protoファイル)にstdinで渡すので、これは本当に重要です。そして出力はプラグインによってstdoutに書き込まれるので、そこには問題はありません。ここで

は私のプラグインでprotocを実行するための最後のコマンドである:

path\to\protoc.exe --plugin=protoc-gen-my-plugin=redirect.bat --my-plugin_out=output\path\gen my_proto.proto 
関連する問題