1

私は次のコードを持っています

var parameters =
    string.Format("TestSuiteDefinitions.dll /include:{0} /out:{1} /err:{2} /xml:{3}", String.Join(",", args), OutputLog, ErrorLog, ResultLog);

var p = Process.Start(GetAssemblyDirectory() + @"\NUnit\nunit-console.exe", parameters);

これにより、アプリケーションから別のプロセスを起動して、必要な出力でNUnitコンソールを起動できます。問題は、実際のNUnit出力がログに書き込まれる唯一のものであるということです。他の理由でプロセスが失敗した場合、コマンドプロンプトレベルでnunit-console.exeから表示されていたコマンド出力が失われます。

追加してみました

> CommandOutput.txt

また

| CommandOutput.txt

Process.Startパラメータ文字列の最後にありますが、エラーがスローされるため、それは気に入らないのです。

誰かがこれを行う方法を提案できますか?また、他のプロセスが起動されるとすぐに呼び出しプロセスをシャットダウンする必要があるため、プロセスの標準出力ストリームを使用できません。そのため、ストリームの読み取りと書き込みを開いたままにすることはできません。

4

1 に答える 1

3

Process.Startシェルを開始するのではなく、プロセスを生成するだけです。したがって、リダイレクトとパイプが機能しないことは驚くことではありません。インスタンスを設定できる場所に渡し、から自分でファイルに書き込むことができます。 ProcessStartInfoProcess.StartRedirectStandardOutputp.StandardOutput

于 2012-05-09T14:54:42.407 に答える