8

facile da riprodurre, ma davvero strano per me:multipli args in applicazione console non parsing correttamente

Aggiungere il seguente 'args' con 3 corde nel comando argomenti della riga di casella di testo in VisualStudio (Sotto Progetto Proprietà-> Debug-> Start Options):

-SourceFile:"c:\temp\file.txt" -DestinationFolder:"c:\temp\" -ArchiveFolder:"C:\temp\" 

prova con questa semplice applicazione console:

class Program 
{ 
    static void Main(string[] args) 
    { 
     foreach (string t in args) 
     { 
      Console.WriteLine(t); 
     } 
     Console.ReadKey(); 
    } 
} 

Risultato: l'array (args []) ha 2 invece di 3 stringhe?

[0] SourceFile:c:\temp\file.txt 
[1] DestinationFolder:c:\temp" -ArchiveFolder:C:\temp" 

Qualcuno può spiegarmi perché questo accade? C'è qualcosa di strano con le virgolette causa normalmente, le virgolette saranno rimosse da .net, ma qui, ci sono ancora alcune citazioni ... ma non riesco a vedere il problema ...

Grazie per qualsiasi aiuto!

risposta

12

Si dispone di un valore \" nel valore DestinationFolder, che "fugge" la citazione, includendola nel testo del valore anziché accoppiare con la citazione di apertura per chiudere la stringa. Volete un letterale, \, in modo da utilizzare \\:

-SourceFile:"c:\temp\file.txt" -DestinationFolder:"c:\temp\\" -ArchiveFolder:"C:\temp\\" 

(si può anche vedere la fuga in azione nel motore in modo che sta mettendo in evidenza)

+0

THX! ora è chiaro :) – dataCore