ProcessStartInfo.Arguments 接受带双引号的多个参数

ProcessStartInfo.Arguments accept multiple arguments with double quotes

string CandlePath = "C:\Program Files (x86)\WiX Toolset v3.11\bin\candle.exe";
string BundlePath = "C:\Solution Directory\Bundle.wxs";
string wixObjPathToSave = "C:\Solution Directory\Bundle.wxs";
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe"); 
processStartInfo.WindowStyle = ProcessWindowStyle.Normal;
processStartInfo.Arguments ="/k \"" + candlePath + "\" " +BundlePath + " " +wixObjPathToSave;

当我像上面那样传递参数时,进程正在接受参数但是 candle.exe 给出错误 'C:\Solution' 不被识别为内部或外部命令,这是预期的,因为我没有提供双引号bundlePath 和 wixobjPathToSave

processStartInfo.Arguments ="/k \"" + candlePath + "\" \"" +BundlePath + "\" \"" + wixObjPathToSave +"\"";

当我像上面那样传递参数时,该过程给出了 'C:\Program' 未被识别为内部或外部命令的错误。

我做错了什么?

我得到了答案

processStartInfo.Arguments ="/k \"\"" + candlePath + "\" \"" +BundlePath + "\" \"" + wixObjPathToSave +"\"";

我在前面多加了一个双引号。现在它工作正常。但我只有一个疑问为什么需要额外的双引号?