Comment échapper les guillemets dans Exec Command dans MSBuild

131

J'essaie de créer un script MSBuild qui mappe un lecteur réseau à une lettre de lecteur dans le script, mais malheureusement, le chemin d'accès au dossier cible comprend un espace intégré. L'espace incorporé provoque l'échec du mappage et je ne sais pas s'il est possible d'échapper des guillemets autour du chemin. J'ai essayé les guillemets doubles, mais MSBuild ne l'aime pas (soit cela, soit Windows XP ne l'aime pas). Quelqu'un sait-il coder cette bête pour que la carte fonctionne?

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

L'espace intégré se trouve bien sûr dans des "fichiers programmes".

Cyberherboriste
la source

Réponses:

192

Utilisez &quot;pour encoder les guillemets que vous souhaitez netvoir à l'intérieur de la Commandvaleur d'attribut:

<Exec Command="net use x: &quot;\\ofmapoly703\c$\program files\ar\iap&quot; /user:$(UserID) $(Password)" 
WorkingDirectory="c:\" 
ContinueOnError="false" 
/> 
vladr
la source
7
Cela n'aide pas lorsque vous l'avez Command="quot;$(PathWithTrailingBackslash)&quot;"car il rend comme "Path\With\Trailing\Backslash\"et \"est la séquence d'échappement de ligne de commande pour ", donc tous les arguments suivants sont foirés.
jnm2
@ jnm2 Ne pourriez-vous pas simplement en ajouter un autre &quot;après le second? Command="quot;$(PathWithTrailingBackslash)&quot;&quot;"
TetraDev
@TetraDev Ensuite, la barre oblique inverse est toujours manquante et vous avez un devis non fermé, dont je ne suis pas tout à fait sûr de l'effet.
jnm2 le
84

Vous pouvez utiliser des guillemets simples pour la commande, par exemple

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

(À partir de la tâche d'exécution MSBuild sans blocage )

Michael Freidgeim
la source
Pour moi, utilisez des guillemets simples au lieu de & quot; c'est une meilleure solution. Parce que le & quot ;. Cela pourrait conduire à des problèmes lorsque vous essayez de faire un XmlPoke, ses caractères d'espacement sont amusants: à partir de & quot; à & amp; quot;
JavierD