0

我有以下代码来使用 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'

有什么办法可以按住那个屏幕,这样我就可以知道这里发生了什么?

4

2 回答 2

3

只需使用 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);
于 2013-04-10T14:23:16.373 回答
2

您可以尝试使用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();
于 2013-04-10T14:33:35.420 回答