2016-10-09 6 views
-1

私は本当にインターネット上で見つけることができない質問をする必要がありました。私はC#アプリケーションでcmdを開くためにプロセスを使用しています。各コマンドの後に私は、このコマンドは、私は他を続けることができる終えたことを確認する必要があります!...たSystem.Diagnosticsている可能性がありますどのように...ここで私が試した私のコード..終了のためターミナルで特定のコマンドを実行した後に続ける

var startInfo = new ProcessStartInfo 
     { 
      FileName = "cmd.exe", 
      RedirectStandardInput = true, 
      RedirectStandardOutput = true, 
      UseShellExecute = false, 
      CreateNoWindow = false, 
      WorkingDirectory = @"E:/Visual Studio 2013/" + project_Name + "/packages/NUnit.ConsoleRunner.3.4.1/tools" 
     }; 

     var process = new Process { StartInfo = startInfo }; 

     process.Start(); 
     process.StandardInput.WriteLine("nunit3-console.exe E:/Debug/Report_Testing.dll"); 


     process.WaitForExit();  

待機はここです無限にハングアップし、私はこのコード行を渡すことができません。 これはどのような解決策ですか?

答えて

0

オプション/c nunit3-console.exe E:/Debug/Report_Testing.dllを追加してみてください。

これは今のところ、cmdを実行し、コマンドの後にプロンプ​​トが表示されたままになります。 WaitForExitcmdが完了するのを待っています。

+0

私はあなたを理解できませんUno申し訳ありませんが、私はコマンドが終了したら知りたいです...オプション/ kは何をしますか?あなたは私が筆記線にそれを加えたいのですか? –

+0

@ OmarEl-elamyあなたのプロセスは、nunitランナではなく、 'cmq'を開始します。あなたのコードでそれを閉じたい場合は、 'exit'をコマンドラインに送るべきですが、それは本当にエレガントではないと思います。 –

+0

テストランナーはcmdの**子**として実行されているので、ランナーが終了しても親は実行しません。 –

-1

私は解決策を得ることができました:

私は私のWriteLineメソッドコマンドにこれを追加し、このようになり、それを変更しました:

 process.StandardInput.WriteLine("nunit3-console.exe E:/Debug/Report_Testing.dll" + "&" +"exit"); 

// [終了待ちを使用 process.WaitForExit();

これで私はコマンドが実行されたことを確認しました。

+0

それは本当に厄介です、私は1つの時間コマンドを実行しようとします。 – user4388177

+0

ワンタイムコマンドhow?私はちょうどそれを終了して終了したいですか? –

関連する問題