2013-12-18 3 views
0

Не помещайте нисходящее изображение, пока вы его не прочитаете полностью. однако существует много вопросов по одному и тому же заголовку, ни один из них не работает, и я хочу решить свою конкретную проблему. Пожалуйста помоги.process.waitforexit hangs

Я работаю над приложением C# 4.0 Asp.Net, На веб-странице при нажатии кнопки я хочу создать exe. Так что я использую devenv.exe, но он зависает на process.waitforexit.

Это работало более 7 месяцев, но до двух дней внезапно он прекратил работать. Он также работает на localhost, после публикации на сервере он не работает. код ниже

System.Diagnostics.Process process = new System.Diagnostics.Process(); 
process.StartInfo.FileName = "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\IDE\\devenv.exe"; 
process.StartInfo.Arguments = @"D:\ProjFolder\xxx.sln /rebuild"; 
process.StartInfo.UseShellExecute = false; 
process.StartInfo.CreateNoWindow = true; 
process.StartInfo.ErrorDialog = false; 
process.StartInfo.RedirectStandardError = true; 
process.StartInfo.RedirectStandardOutput = true; 

OutputMsg = ""; 

if (!process.Start()) 
{ 
    OutputMsg = "failed.</br>"; 
    OutputMsg += process.StandardError.ReadToEnd(); 
    HttpContext.Current.Response.Write(OutputMsg); 
    return false; 
} 
// Some people said that this is buffer problem, you should release it by reading 
// output, i used "ReadToEnd" that is not working, so trying this again, and also it 
// is not working 
//while (!process.StandardOutput.EndOfStream) 
//{ 
//string outputmsg = process.StandardOutput.ReadLine(); 
//HttpContext.Current.Response.Write(outputmsg); 
//} 
//string output = process.StandardOutput.ReadToEnd(); 

process.WaitForExit(60000); 
if (process.HasExited) 
{ 
    OutputMsg = "Succeeded."; 
    HttpContext.Current.Response.Write(OutputMsg); 
} 
else 
{ 
    OutputMsg = "Process not completed properly."; 
    process.Kill(); 
    HttpContext.Current.Response.Write(OutputMsg); 
    return false; 
} 
+0

Выйти на конечность здесь, но, может быть, ваш фактический путь к проекту содержит пробелы в его имени? – Rotem

+1

«Не помещайте вниз, пока вы не прочитаете его полностью» - вы уверены, что так вы хотите, чтобы люди действовали? Я думаю, у вас там слишком много негативов. –

+0

Кроме того, я почти уверен, что вы не собираетесь запускать визуальную студию на веб-сервере. Любая причина, по которой вы использовали VS, а не только инфраструктуру MSBUILD? –

ответ

1

Как сказал @Damien_The_Unbeliever, я пробовал MSBuild.Exe, и он отлично работает. Еще не известно, почему devenv.exe остановил работу.

Однако msbuild.exe работает хорошо.

Примечание: MSBuild.exe можно использовать в командной строке и для выполнения проекта путем кодирования, мы можем использовать эту утилиту командной строки.

msbuild.exe расположены в следующих местах, быть уход полная версия о

C:\Windows\Microsoft.Net\Framework\v2.0.50727\MSBuild.exe 
C:\Windows\Microsoft.Net\Framework\v3.5\MSBuild.exe 
C:\Windows\Microsoft.Net\Framework\v4.0.30319\MSBuild.exe 

целевой проект/решение рамки версии и msbuild.exe версия должна быть такой же.

если кто-то нуждается в помощи о MSBuild.exe эта ссылка может быть слишком использовать полный http://msdn.microsoft.com/en-us/library/ms164311%28v=vs.90%29.aspx Она содержит аргументы командной строки Вся документация

Thanx @Damien_The_Unbeliever для подсказки.

0

Если он работает 2 дня назад, и вы не изменили любую вещь на свой код, так что смотрите Arround разрешения, может быть кто-то по каким-то причинам изменяет права доступа на сервере.

Другие способы, если некоторые изменения произошли в коде (приложение asp.net или на .exe), начните с перехода назад (отмените последние изменения) и повторите попытку, если он работает, и если это так , затем загляните глубоко в ваши изменения, проблема где-то там.

Обратитесь к вопросу о тайм-ауте вашего процесса, он не должен превышать тайм-аут запроса HTTP (устанавливается по умолчанию на 20 секунд).

+0

Без изменений в приложении Asp.Net и без изменений в решении (которое компилируется каждый раз). Разрешение, я проверил их, я did'nt нашел что-то, и в блогах, которые они сказали о разрешении, я сделал все, но не работает из них –

+0

Я установил в web.config, тайм-аут установлен на один день –

+0

могут быть некоторые обновления для Windows, vs updates, ... – Bedouin