C# 如何使用Process.Start()运行CL.exe?

C# 如何使用Process.Start()运行CL.exe?,c#,process.start,cl.exe,C#,Process.start,Cl.exe,我有以下代码 using (StreamWriter outfile = new StreamWriter(@"f:\trial.cpp")) { outfile.Write(txtCode.InnerText); } System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo(@"cl.exe", @" 'trial.cpp'"); procStartInf

我有以下代码

using (StreamWriter outfile = new StreamWriter(@"f:\trial.cpp"))
{
    outfile.Write(txtCode.InnerText);
}

System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo(@"cl.exe", @"  'trial.cpp'");

procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.UserName = "asdasd";
SecureString secureString = new SecureString();
foreach (char c in "abcded")
{
    secureString.AppendChar(c);
}
procStartInfo.Password = secureString;
// Do not create the black window.
procStartInfo.CreateNoWindow = true;
procStartInfo.WorkingDirectory = @"f:\";
// Now we create a process, assign its ProcessStartInfo and start it
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();

// Get the output into a string
string result = proc.StandardOutput.ReadToEnd();
如何将文件名作为参数传递?上面的代码没有运行,我已经尝试了所有完整路径,不同的路径选项


有人能帮忙吗?

参数设置不正确。你有:

var procStartInfo = new ProcessStartInfo(@"cl.exe", @"  'trial.cpp'");
其中名称中有空格和单引号。尝试:

var procStartInfo = new ProcessStartInfo(@"cl.exe", @"trial.cpp");
编辑

startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "CL.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = "trial.cpp";

try
{
    using (Process exeProcess = Process.Start(startInfo))
    {
        exeProcess.WaitForExit();
    }
}
catch
{
    // error handling
}
这里的要点是CL是一个命令行可执行文件,而不是windows GUI应用程序

如果cl.exe不在系统路径中(默认情况下不在),则启动进程将找不到可执行文件,并且无法运行


因此,我怀疑您看到了cl.exe不在系统路径中的事实。

不运行吗?错误是什么?定义“不运行”。准确地解释正在发生的事情和你期望发生的事情。“不运行”是什么意思?进程未启动?错误的命令行参数?是否用字符串参数交换“@”f:\trial.cpp“?此外,在处理该文件之前,请确保该文件存在,以解决问题,例如,如果(new System.IO.FileInfo(yourFileAndPath).exists).“不运行”意味着它不会产生任何输出。结果字符串中只有“Trial.cpp”,这没有任何意义。我检查了trial.cpp所在的目录,它没有putput文件,在cl.exe目录以及c:\windows\system32中检查,没有输出。@Oded我很抱歉,但他可以通过谷歌轻松找到答案。是的。你也可以这样评论。好吧,我已经用谷歌搜索了足够多了,我想每个在这里发帖的人都会足够聪明,先用谷歌搜索,只有在找不到解决方案时才会来StackOverflow。我可以再给你5个链接,提供更多的细节和更精确的代码,但是我尝试了所有的链接,但没有任何效果,因此我正在寻求帮助。@user1235483-很好的假设。有很多问题表明情况并非如此。。。你真的应该把你试过的东西贴在你的问题上。同样的结果。这不会有太大的区别,因为我还可以提供带引号的文件路径,额外的空间只会在参数中增加空间,这对于解析来说应该不是问题。