为了将带有空格的路径传递给.NET控制台应用程序,您需要对其进行转义。可能不是转义,而是用双引号括起来:
myapp.exe --path C:\Program Files\MyApp`
变成
new string[] { "--path", "C:\Program", "Files\MyApp" }
但是
myapp.exe --path "C:\Program Files\MyApp"
变成
new string[] { "--path", "C:\Program Files\MyApp" }
它工作正常,你可以轻松地解析它。
我想扩展给定的参数集合,添加一个额外的参数,并使用结果参数集启动新进程:
new ProcessStartInfo(
Assembly.GetEntryAssembly().Location,
String.Join(" ", Enumerable.Concat(args, new[] { "--flag" })))
这将变为 myapp.exe --path C:\Program Files\MyApp --flag
,其中路径省略了转义。
如何使用通用解决方案解决它?(不需要手动搜索需要转义和引用的每个参数的值)
string[]
和IEnumerable<string>
。 - abatishchev