Come sfuggire alle virgolette nel comando Exec in MSBuild


131

Sto cercando di creare uno script MSBuild che associ un'unità di rete a una lettera di unità nello script, ma sfortunatamente il percorso della cartella di destinazione include uno spazio incorporato. Lo spazio incorporato causa il fallimento della mappatura e non so se sia possibile sfuggire alle virgolette attorno al percorso. Ho provato le doppie virgolette, ma a MSBuild non piace (né quello o Windows XP non piace). Qualcuno sa come codificare questa bestia in modo che la mappa funzioni?

<Exec Command="net use x: \\ofmapoly703\c$\program files\ar\iap /user:$(UserID) $(Password)"
WorkingDirectory="c:\"
ContinueOnError="false"
/>

Lo spazio incorporato ovviamente si verifica in "file di programma".

Risposte:


192

Utilizzare &quot;per codificare le doppie virgolette che si desidera netvedere all'interno del Commandvalore dell'attributo:

<Exec Command="net use x: &quot;\\ofmapoly703\c$\program files\ar\iap&quot; /user:$(UserID) $(Password)" 
WorkingDirectory="c:\" 
ContinueOnError="false" 
/> 

7
Questo non aiuta quando hai Command="quot;$(PathWithTrailingBackslash)&quot;"perché rende come "Path\With\Trailing\Backslash\"ed \"è la sequenza di escape della riga di comando ", quindi tutti gli argomenti seguenti vengono incasinati.
jnm2,

@ jnm2 Non potresti semplicemente aggiungerne un altro &quot;dopo il secondo? Command="quot;$(PathWithTrailingBackslash)&quot;&quot;"
TetraDev,

@TetraDev Quindi la barra rovesciata è ancora mancante e hai una citazione non chiusa, il cui effetto non sono del tutto sicuro.
jnm2,

84

È possibile utilizzare virgolette singole per il comando, ad es

  <Exec Command='explorer.exe "$(DestinationDir)"' IgnoreExitCode="true" />

(Dall'attività exec di MSBuild senza blocco )


Per me l'uso di virgolette singole anziché & quot; è una soluzione migliore. Perché il & quot ;. Ciò potrebbe causare problemi quando provi a fare un XmlPoke, andando a spaziare i caratteri in un modo divertente: da & quot; a & quot;
JavierD
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.