Я пытаюсь запустить mercurial в оболочке из моего приложения C# wpf. Моя цель - получить вывод в строку, чтобы я мог ее проанализировать.
К сожалению для меня, кажется, что hg.exe (от tortoiseHg) ничего не возвращает через приведенный ниже код. Другие .exe работают, как видно из комментариев ниже;
Мой код ниже;
`
string workingDir = "";
string filename = "";
string param = "";
//This works
workingDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
filename = "unrar.exe";
param = "";
//this works
workingDir = "c:\\program files\\WinRar";
filename = "unrar.exe";
param = "";
//this works
workingDir = "C:\\Program Files (x86)\\TortoiseHg";
filename = "docdiff.exe";
param = "";
//this does not work. I get a null returned. Why?
workingDir = "C:\\Program Files (x86)\\TortoiseHg";
filename = "hg.exe";
param = "";
//this does not work. I get a null returned. Why?
workingDir = "C:\\Program Files (x86)\\TortoiseHg";
filename = "hg.exe";
param = "help";
string retVal = "";
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.WorkingDirectory = workingDir;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.FileName = filename;
proc.StartInfo.Arguments = param;
proc.Start();
System.IO.StreamReader reader = proc.StandardOutput;
retVal = reader.ReadToEnd();
System.Windows.MessageBox.Show(retVal);`
Если бы кто-нибудь мог предложить, почему этот код не работает, или, альтернативно, другой метод получения вывода командных строк mercurial, я был бы очень признателен.
Спасибо