使用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'
有没有办法握住屏幕,这样我就能知道这里发生了什么?
使用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();