c#运行带有两个参数的命令行

时间:2016-08-17 15:19:15

标签: c# command-line

所以我目前正在为一个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窗口中运行该命令时,它工作正常。有什么想法吗?

1 个答案:

答案 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";

应该有效