将多个参数作为命令行参数传递

Passing multiple arguments as command line args

我正在使用 Process.Start 从另一个 .NET 应用程序调用一个 .NET 应用程序并传入一堆字符串作为命令行参数:

startInfo.Arguments = String.Join("""  """, MyArray)
Dim p As Process = Process.Start(startInfo)

我的意图是传递如下内容:

"first value" "second value" "third value"

并从第二个应用程序中检索:

Sub Main(ByVal args() as String)
    If args.Length > 0 Then

    End If
    ...
End Sub

不幸的是 args.Length 只有 returns 1 - 我传递的所有值都作为单个值传递:"first value second value third value"

我尝试在第一个应用程序中用双引号将每个包起来,但似乎没有帮助。我知道我可以只检索 args(0) 然后将其拆分为一个值数组,但我不想这样做。即使没有双引号,它以前也以某种方式对我有用。所以我想弄清楚发生了什么,以及如何让它将我的字符串作为多个值而不是 1 传递。

你的String.Join不会给你你想要的。它不会将双引号放在字符串的开头和结尾。

startInfo.Arguments = """" + String.Join(""" """, MyArray) + """"