使用c#保持控制台窗口打开

本文关键字:窗口 控制台 使用 | 更新日期: 2023-09-27 18:08:22

我有下面的代码来构建一个项目使用MSBuild:

string process = sourcePath + @"'Application.sln /t:rebuild";
System.Diagnostics.Process csc = System.Diagnostics.Process.Start(@"C:'WINNT'Microsoft.NET'Framework'v2.0.50727'MSBuild.exe",process);

这个代码以前可以工作,我不知道为什么现在不能工作了。

如果我用CMD做同样的事情,它工作得很好,但不是从VS.Net,控制台窗口消失得很快,所以我看不到错误信息。

如果我调试代码,我得到这个:BasePriority = 'csc.BasePriority' threw an exception of type 'System.InvalidOperationException'

有没有办法握住屏幕,这样我就能知道这里发生了什么?

使用c#保持控制台窗口打开

使用MSBuild.exe作为参数来启动cmd进程,而不是直接启动exe文件。

string process = @"C:'WINNT'Microsoft.NET'Framework'v2.0.50727'MSBuild.exe " + sourcePath + @" 'Application.sln /t:rebuild";
System.Diagnostics.Process csc = System.Diagnostics.Process.Start(@"%windir%'system32'cmd.exe", process);

您可以尝试使用RedirectStandardOutput重定向msbuild的输出

Process compiler = new Process();
compiler.StartInfo.FileName = @"C:'WINNT'Microsoft.NET'Framework'v2.0.50727'MSBuild.exe";
compiler.StartInfo.Arguments = sourcePath + @"'Application.sln /t:rebuild";
compiler.StartInfo.UseShellExecute = false;
compiler.StartInfo.RedirectStandardOutput = true;
compiler.Start();    
Console.WriteLine(compiler.StandardOutput.ReadToEnd());
compiler.WaitForExit();