C# ProcessStartInfo.Arguments-常量

C# ProcessStartInfo.Arguments-常量,c#,command-line,arguments,C#,Command Line,Arguments,我正在尝试调用提供的命令行批处理工具程序。尝试和错误已将我带到ProcessStartInfo。。。问题是参数必须是常量。我一直在收集要在参数中使用的路径和文件名。如何在参数中使用变量 ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.CreateNoWindow = false; startInfo.UseShellExecute = false; startInfo.FileName = "sbsmutator.ex

我正在尝试调用提供的命令行批处理工具程序。尝试和错误已将我带到
ProcessStartInfo
。。。问题是参数必须是常量。我一直在收集要在参数中使用的路径和文件名。如何在参数中使用变量

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "sbsmutator.exe";
startInfo.WorkingDirectory = @"C:\Program Files\Allegorithmic\Substance\\BatchTools\1.x\";
startInfo.Arguments = " specialization --input " + templatePath + " --presets-path " + resourcesPath +
                    " --output-name " + name +
                    " --output-graph-name " + RemoveSpaces(name) +
                    " --output-path " + sbsPath;

在这个问题上,你自相矛盾,你说你需要使用常量,但又问如何使用变量——就想法而言,变量是截然相反的。一个是常数,另一个是变量。目前,您使用文本来构造输入,因此可以很容易地将它们交换出去

如果要为接收进程的参数使用常量,例如,请执行以下操作:

const string ProcessExe = "sbsmutator.exe";
const string OutputName = "--output-name";
并将它们串在一起,或使用
string.Format
等:

startInfo.FileName = ProcessExe;
startInfo.Arguments = string.Format("{0} {1}", OutputName, SomeOtherConstant);
等等


使用变量会非常相似,只是拥有可变可重用性这类东西可能没有意义。

上面的变量有什么问题?有错误吗?我不确定我是否理解这个问题。您想知道如何在参数中使用变量,但您使用的是
“--output name”+name
。这不是你要找的吗?在Substance和BatchTools之间有一个双“\\”的目录分隔符。