Чтобы передать путь с пробелами в консольное приложение .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" }
, и он отлично работает, и вы можете легко это проанализировать.
Я хочу расширить набор параметров, заданных с добавлением one и запустите новый процесс с полученным набором параметров:
new ProcessStartInfo(
Assembly.GetEntryAssembly().Location,
String.Join(" ", Enumerable.Concat(args, new[] { "--flag" })))
Это становится myapp.exe --path C: \ Program Files \ MyApp --flag
, где path удаляет свое экранирование.
Как чтобы обойти это с помощью общего решения? (без поиска значения каждого параметра, требующего экранирования и цитирования вручную)