Python スクリプトを実行する WCF サービスを作成しています。
そのために、次のコードを使用しています。
ProcessStartInfo start = new ProccessStartInfo();
start.FileName = "my/full/path/to/python.exe";
start.Arguments = string.Format("{0} {1}", script, args);
start.UseShellExecute = false;
start.CreateNoWindow = true;
start.RedirectStandardOutput = true;
start.RedirectStandardError = true;
Process p = new Process();
p.StartInfo = start;
p.Start();
p.WaitForExit();
string stderr = Process.StandardError.ReadToEnd();
string stdout = Process.StandardOutput.ReadToEnd();
今私が気付いたのは(多くのテストの後)、宣言されていない変数が使用されている場合など、エラーが「コンパイル」エラーに関連している場合、プロセスオブジェクトが標準エラー/出力を取得するか、例外をキャッチすることですただし、ランタイム例外と出力はキャッチされていないか、C# スコープで読み取ることができません。
C#コードから送信された「python.exe pythonCommand.py args」全体を実行するか、コマンドラインプロンプトのProcessStartInfo.Argumentsにあったものを送信しようとしましたが、どちらの場合も例外と出力が返されました、しかし、それでもC#Processオブジェクトを介して実行すると、キャッチするために例外がスローされたり、出力やエラーが発生したりしません。
私はこれについて私がちょっとばかげていると感じさせるものは何も見つけていません(うまくいけば私はそうであり、これには簡単な解決策があります)。
ありがとう、マット