所以我目前正在为一个BlueJ喜欢克隆用于c#。现在我想编译工作文件夹中的所有.cs文件,点击我使用的C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /define:DEBUG /optimize /out:Program.exe *.cs
,我从msdn页面获取。为了工作,虽然我需要在正确的方向上,所以我使用以下:cd /d + dir
其中dir是文件的指示。现在当我尝试从c#中运行它时:
cmd = @"cd /d "+ dir + @" && C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /define:DEBUG /optimize /out:Program.exe *.cs";
file = "cmd";
var proc = new Process();
proc.StartInfo = new ProcessStartInfo(file, cmd);
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.EnableRaisingEvents = true;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.UseShellExecute = false;
proc.ErrorDataReceived += proc_DataReceived;
proc.OutputDataReceived += proc_DataReceived;
proc.Start();
proc.BeginErrorReadLine();
proc.BeginOutputReadLine();
什么都没发生。但是当我尝试在cmd窗口中运行该命令时,它工作正常。有什么想法吗?
答案 0 :(得分:1)
使用
运行命令cmd.exe /c
如果要传递执行命令,cmd.exe需要参数“/ c”。
所以:
cmd = @"/c cd /d "+ dir + @" && C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /define:DEBUG /optimize /out:Program.exe *.cs";
应该有效