Cómo escapar de las comillas en el comando Exec en MSBuild

131

Estoy tratando de crear un script MSBuild que asigne una unidad de red a una letra de unidad en el script, pero desafortunadamente la ruta a la carpeta de destino incluye un espacio incrustado. El espacio incrustado hace que falle la asignación, y no sé si es posible escapar de las comillas en el camino. He intentado las comillas dobles, pero a MSBuild no le gusta (eso o Windows XP no le gusta). ¿Alguien sabe cómo codificar esta bestia para que el mapa funcione?

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

El espacio incrustado, por supuesto, ocurre en "archivos de programa".

Ciberherbalista
fuente

Respuestas:

192

Use &quot;para codificar las comillas dobles que desea netver dentro del Commandvalor del atributo:

<Exec Command="net use x: &quot;\\ofmapoly703\c$\program files\ar\iap&quot; /user:$(UserID) $(Password)" 
WorkingDirectory="c:\" 
ContinueOnError="false" 
/> 
vladr
fuente
77
Esto no ayuda cuando lo tiene Command="quot;$(PathWithTrailingBackslash)&quot;"porque representa como "Path\With\Trailing\Backslash\"y \"es la secuencia de escape de la línea de comandos para ", por lo que todos los siguientes argumentos se confunden.
jnm2
@ jnm2 ¿No podría agregar otro &quot;después del segundo? Command="quot;$(PathWithTrailingBackslash)&quot;&quot;"
TetraDev
@TetraDev Entonces aún falta la barra invertida y tienes una cita sin cerrar, cuyo efecto no estoy muy seguro.
jnm2
84

Puede usar comillas simples para el comando, p. Ej.

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

(Desde la tarea ejecutiva de MSBuild sin bloqueo )

Michael Freidgeim
fuente
Para mí, use comillas simples en lugar de & quot; Es una mejor solución. Porque el & quot ;. Eso podría generar problemas cuando intentas hacer un XmlPoke, va a espaciar los caracteres de una manera divertida: desde & quot; a & amp; quot;
JavierD