【发布时间】:2021-12-31 05:54:12
【问题描述】:
在新程序中以string[] 接收参数。它们已经被正确解析,因此引号会将参数保持在一起,即使它可能是包含空格的路径。不错。
我现在想将它们转发到新的Process,但ProcessStartInfo 仅支持string 定义参数。
因此,仅将它们与空格连接是错误的,因为路径可能会被拆分为多个参数。我也不确定是否将它们用引号括起来,然后用空格连接它们是否适用于每个实例 - 我不这么认为,因为目标程序可能看不到 -u 和 "-u" 等效。在 .NET Framework 中是否有一种干净的方法可以做到这一点?
【问题讨论】:
-
It's all in the docs 和.Net 5+ 支持
ProcessStartInfo.ArgumentList -
@Charlieface 这没有回答问题。我知道它如何适用于具体案例。但我问的是在一般情况下它是如何工作的,也许已经有我可以使用的代码来正确清理参数。
-
ProcessStartInfo.Arguments的文档确实指出对于 .net 程序A single argument that includes spaces must be surrounded by quotation marks, but those quotation marks are not carried through to the target application.这实际上意味着如果您将参数传递给 C# 程序,"-u"和-u都将被看到作为-u,即使它不包含任何空格。 -
@AyCe (对 Charlieface)这不能回答问题 - 是的,这就是为什么它是一个评论......
-
@MatthewWatson 是的,我知道。但我没有传递给 C# 程序。
标签: c# .net windows process command-line-arguments