Мне нужно написать небольшую утилиту для восстановления решения. Я использую код ниже, чтобы сделать то же самое.Показать команды cmd на C# winform Приложение
string solutionFile = @"E:\Projects\TFS\Code\WebSite.sln";
string cmd1 = @"""C:\Program Files\Microsoft Visual Studio 11.0\VC\vcvarsall.bat"" x86" + " &devenv " + "\"" + solutionFile + "\"" + " /rebuild release";
cmd1 = "\"" + cmd1 + "\"";
String command = String.Format("{0} {1}", @"/k ", cmd1);
ProcessStartInfo cmdsi = new ProcessStartInfo("cmd.exe")
{
UseShellExecute = false,
RedirectStandardOutput = true
};
cmdsi.Arguments = command;
using (Process cmd = Process.Start(cmdsi))
{
using (StreamReader reader = cmd.StandardOutput)
{
string result = reader.ReadToEnd();
listBox1.Items.Add(result);
}
}
Если вы увидите в командной строке, вы можете увидеть результат выполнения, но то же самое не отражается в списке.
Пожалуйста, помогите решить эту проблему.
Заранее спасибо.
Помню, я делал это раньше, но я дон Не помню, чтобы когда-либо сталкивались с такой проблемой. Тем не менее, вы пробовали вызывать «listBox1.Items.Add» в основном потоке? Это может быть проблема, связанная с потоком. – Falgantil
Из-за основного потока он не будет показывать результат сразу, но после завершения выполнения он должен показать вывод. Но он показывает только одно пространство («»). Я позаботился об этом [link] (http://www.dotnetperls.com/redirectstandardoutput) – Vikesh
Попробуйте упростить 'cmd1', поэтому он просто запускает базовый пакетный файл, который перекликается с текстом на консоль и видит, работает ли это , Это должно сузить проблему до кода, который вы показали, или командного файла, который вы вызываете. –