Mejorar la forma en que estoy pasando los argumentos de depuración de línea de comandos

Im mi aplicación de consola paso los argumentos de esta manera:

#Region " DEBUG CommandLine Arguments "

    Private Function Set_CommandLine_Arguments() As List(Of String)

#If DEBUG Then
        ' Debug Commandline arguments for this application:
        Dim DebugArguments = "HotkeyMaker.exe /Hotkey=Escape /run=notepad.exe"
        Return DebugArguments.Split(" ").ToList
#Else
        ' Nomal Commandline arguments:
        Return My.Application.CommandLineArgs.ToList
#End If

    End Function

#End Region

Pero eso tiene un gran problema obvio, el carácter espacial producirá falsos argumentos positivos, por ejemplo:

MyProgram.exe /Run="Process path with spaces.exe"

Todos sabemos que, como de costumbre, los argumentos se separan en tokens delimitados por comillas dobles." " caracteres o unspace char, así que obtendré muchos falsos positivos al personalizar mis argumentos de depuración.

EnC# oVBNET ¿Cómo puedo mejorar la función para obtener una lista de argumentos (personalizados) correctamente separados?

ACTUALIZACIÓN 2:

Hice este ejemplo para intentar aclarar mis intenciones:

Module Module1

    ''' <summary>
    ''' Debug commandline arguments for testing.
    ''' </summary>
    Private ReadOnly DebugArguments As String =
    "ThisProcess.exe /Switch1=Value /Switch2=""C:\folder with spaces\file.txt"""

    ''' <summary>
    ''' Here will be stored the commandline arguments of this application.
    ''' If DebugArguments variable is nothing then the "normal" arguments which are passed directly from the console are used here,
    ''' Otherwise, my custom debug arguments are used.
    ''' </summary>
    Private Arguments As List(Of String) = Set_CommandLine_Arguments()

    Sub Main()
        Parse_Arguments()
    End Sub

    Private Sub Parse_Arguments()

        For Each Arg As String In Arguments

            MsgBox(Arg)
            ' Result:
            ' ------
            ' 1st arg: ThisProcess.exe
            ' 2nd arg: /Switch1=Value
            ' 3rd arg: /Switch2="C:\folder
            ' 4th arg: with
            ' 5th arg: spaces\file.txt"

        Next Arg

        ' Expected arguments:
        ' ------------------
        ' 1st arg: ThisProcess.exe
        ' 2nd arg: /Switch1=Value
        ' 3rd arg: /Switch2="C:\folder with spaces\file.txt"

    End Sub

    Public Function Set_CommandLine_Arguments() As List(Of String)

#If DEBUG Then

    If Not String.IsNullOrEmpty(DebugArguments) Then
        ' Retun the custom arguments.
        Return DebugArguments.Split.ToList
    Else
        ' Return the normal commandline arguments passed directly from the console.
        Return My.Application.CommandLineArgs.ToList
    End If

#Else

        ' Return the normal commandline arguments passed directly from the console.
        Return My.Application.CommandLineArgs.ToList

#End If

    End Function

End Module

Respuestas a la pregunta(1)

Su respuesta a la pregunta