2010-07-21 2 views
3

사용자 지정 C# 형식으로 asp.net 응용 프로그램을 미리 컴파일 할 것입니다. 프로세스 로그를 검색하고 프로세스가 성공적인 프로세스인지 여부를 확인하려면 어떻게합니까?Process.Start에서 로그를 얻는 방법

여기에 내 코드

string msPath = "c:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\"; 
string msCompiler = "aspnet_compiler.exe"; 
string fullCompilerPath = Path.Combine(msPath, msCompiler); 
msPath.ThrowIfDirectoryMissing(); 
fullCompilerPath.ThrowIfFileIsMissing(); 

ProcessStartInfo process = new ProcessStartInfo 
{ 
    CreateNoWindow = false, 
    UseShellExecute = false, 
    WorkingDirectory = msPath, 
    FileName = msCompiler, 
    Arguments = "-p {0} -v/{1}" 
     .StrFormat(
      CurrentSetting.CodeSource, 
      CurrentSetting.CompileTarget) 
}; 

Process.Start(process); 

감사입니다! ErrorDataReceived 이벤트 소스 응용 프로그램 레지스터에서

답변

4

ProcessStartInfo.RedirectStandardOutputtrue에 설정 -이 모든 출력 메시지를 찾아 읽을 수있는 스트림 인 Process.StandardOutput 모든 출력을 리디렉션합니다 :

ProcessStartInfo process = new ProcessStartInfo 
{ 
    CreateNoWindow = false, 
    UseShellExecute = false, 
    WorkingDirectory = msPath, 
    RedirectStandardOutput = true, 
    FileName = msCompiler, 
    Arguments = "-p {0} -v/{1}" 
      .StrFormat(
       CurrentSetting.CodeSource, 
       CurrentSetting.CompileTarget) 
}; 

Process p = Process.Start(process); 
string output = p.StandardOutput.ReadToEnd(); 

또한 사용할 수 있습니다 OutputDataReceived 이벤트는 @Bharath K가 그의 대답에서 설명한 것과 비슷한 방식으로 발생합니다.

StandardError에 대해서도 비슷한 속성/이벤트가 있습니다. RedirectStandardError부터 true까지 설정해야합니다.

+0

ProcessStartInfo 클래스에는 Start() 및 StandardOutput()이라는 메서드가 없습니다. –

+0

@Martin Ongtangco - 아니에요. '프로세스'가 수행합니다. 여기를 참조하십시오 : http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo_methods.aspx – Oded

+0

안녕하세요,이 오류가 있지만 나를 도울 세부 정보가 없습니다 ... "시스템 지정된 파일을 찾을 수 없습니다 " –

2

:

StringBuilder errorBuilder = new StringBuilder(); 
reportProcess.ErrorDataReceived += delegate(object sender, DataReceivedEventArgs e) 
{ 
    errorBuilder.Append(e.Data); 
}; 
//call this before process start 
reportProcess.StartInfo.RedirectStandardError = true; 
//call this after process start 
reportProcess.BeginErrorReadLine(); 

이에 데이터를 기록 할 수있는 대상 응용 프로그램에 던져 오류. 이런 식으로 뭔가 :

Console.Error.WriteLine(errorMessage) ; 
관련 문제