Jak zmienić znak cudzysłowu w poleceniu Exec w programie MSBuild


131

Próbuję zbudować skrypt MSBuild, który mapuje dysk sieciowy na literę dysku w skrypcie, ale niestety ścieżka do folderu docelowego zawiera osadzoną przestrzeń. Osadzona przestrzeń powoduje niepowodzenie mapowania i nie wiem, czy można uniknąć cudzysłowów na ścieżce. Próbowałem używać podwójnych cudzysłowów, ale MSBuild tego nie lubi (albo to, albo Windows XP tego nie lubi). Czy ktoś wie, jak zakodować tę bestię, aby mapa działała?

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

Osadzona przestrzeń występuje oczywiście w „plikach programu”.

Odpowiedzi:


194

Służy &quot;do kodowania podwójnych cudzysłowów, które chcesz netwidzieć wewnątrz Commandwartości atrybutu:

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

7
To nie pomaga, gdy masz, Command="quot;$(PathWithTrailingBackslash)&quot;"ponieważ renderuje się jako "Path\With\Trailing\Backslash\"i \"jest sekwencją ucieczki wiersza poleceń dla ", więc wszystkie następujące argumenty są pomieszane.
jnm2

@ jnm2 Nie mógłbyś po prostu dodać kolejnego &quot;po drugim? Command="quot;$(PathWithTrailingBackslash)&quot;&quot;"
TetraDev

@TetraDev W takim razie nadal brakuje odwrotnego ukośnika i masz niezamknięty cytat, którego efektu nie jestem do końca pewien.
jnm2

85

Możesz użyć pojedynczych cudzysłowów dla polecenia, np

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

(Z zadania MSBuild exec bez blokowania )


U mnie używaj pojedynczych cudzysłowów zamiast & bdquo; to lepsze rozwiązanie. Ponieważ & bdquo ;. Może to prowadzić do problemów, gdy spróbujesz zrobić XmlPoke, przechodząc do znaków kosmicznych w zabawny sposób: od & bdquo; na & amp; quot;
JavierD
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.