2010-03-10 15 views
110

Estoy intentando crear un script de 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 la asignación falle, y no sé si es posible escapar de las comillas alrededor de la ruta. He intentado con comillas dobles, pero a MSBuild no le gusta (ni a eso ni a Windows XP). ¿Alguien sabe cómo codificar esta bestia para que el mapa funcione?Cómo escapar de comillas en Comando Exec en MSBuild

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

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

Respuesta

166

Uso &quot; para codificar las comillas dobles que desee net para ver dentro del valor de atributo Command:

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

Esto no ayuda cuando tiene 'Command =" quot; $ (PathWithTrailingBackslash) " "' porque se representa como '" Path \ With \ Trailing \ Backslash \ "' y '\" 'es el comando- secuencia de escape de línea para '" ', por lo que todos los argumentos siguientes se estropean. – jnm2

64

Puede utilizar comillas simples para el mando, por ejemplo.

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

(De MSBuild exec task without blocking)

+1

Funciona como un regalo, gracias – SteveC

0

Para mí los de uso de comillas simples en lugar de " Es una solución mejor. Porque el ". Eso podría causar problemas cuando intente hacer un XmlPoke, va a caracteres de espacio de una manera graciosa: de " a & quot;

Cuestiones relacionadas