Чтобы передать путь с пробелами в консольное приложение .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
, где путь отключается.
Как обходиться с общим решением? (без поиска каждого значения параметра, требующего экранирования и цитирования его вручную)