J'essaie d'obtenir Mercurial à exécuter dans un shell à partir de mon application C# wpf. Mon but est de récupérer la sortie dans une chaîne afin que je puisse l'analyser.Pourquoi ce code C# ne fonctionne-t-il pas? J'essaie de lire la sortie d'un shell à TortoiseHG (Mercurial)
Malheureusement pour moi, il semble que hg.exe (de tortoiseHg), ne renvoie rien via le code ci-dessous. D'autres .exe semblent fonctionner, comme on le voit dans les commentaires ci-dessous;
Mon code est ci-dessous;
`
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);`
Si quelqu'un pourrait suggérer pourquoi ce code ne fonctionne pas, ou bien une autre méthode de récupération de la sortie des lignes de commande mercuriels, je serais très reconnaissant.
Merci
Il peut être écrit d'erreur standard? – McKay
(Plug sans vergogne) Bonjour, J'ai commencé à travailler sur un wrapper de ligne de commande Mercurial, qui va analyser et convertir toutes les sorties et les commandes de Mercurial en plus de syntaxe C# -y. Si vous êtes intéressé, vous pouvez suivre le projet ici: http://bitbucket.org/lassevk/mercurial.net –
une solution finale avec un exemple de code source complet à ce sujet? – Kiquenet