我有以下代码使用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'
有没有办法保持这个屏幕,所以我可以知道这里发生了什么?
答案 0 :(得分: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);
答案 1 :(得分: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();