Bagaimana cara menghindari tanda kutip di Exec Command di MSBuild

131

Saya mencoba untuk membangun skrip MSBuild yang memetakan drive jaringan ke huruf drive dalam skrip, tapi sayangnya path ke folder target menyertakan ruang tertanam. Ruang yang disematkan menyebabkan pemetaan gagal, dan saya tidak tahu apakah mungkin untuk keluar dari tanda kutip di jalur. Saya sudah mencoba tanda kutip ganda, tetapi MSBuild tidak menyukainya (entah itu atau Windows XP tidak menyukainya). Adakah yang tahu bagaimana cara membuat kode binatang ini sehingga petanya bekerja?

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

Ruang tertanam tentu saja terjadi di "file program".

Cyberherbalist
sumber

Jawaban:

192

Gunakan &quot;untuk menyandikan tanda kutip ganda yang ingin Anda netlihat di dalam Commandnilai atribut:

<Exec Command="net use x: &quot;\\ofmapoly703\c$\program files\ar\iap&quot; /user:$(UserID) $(Password)" 
WorkingDirectory="c:\" 
ContinueOnError="false" 
/> 
vladr
sumber
7
Ini tidak membantu ketika Anda memilikinya Command="quot;$(PathWithTrailingBackslash)&quot;"karena dirender sebagai "Path\With\Trailing\Backslash\"dan \"adalah urutan pelarian baris perintah ", sehingga semua argumen berikut menjadi kacau.
jnm2
@ jnm2 Tidak bisakah Anda menambahkan yang lain &quot;setelah yang kedua? Command="quot;$(PathWithTrailingBackslash)&quot;&quot;"
TetraDev
@TetraDev Kemudian backslash masih hilang dan Anda memiliki kutipan tertutup, efeknya saya tidak yakin.
jnm2
84

Anda dapat menggunakan tanda kutip tunggal untuk perintah, misalnya

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

(Dari tugas MSBuild exec tanpa memblokir )

Michael Freidgeim
sumber
Bagi saya, gunakan kutipan tunggal alih-alih & quot; itu solusi yang lebih baik. Karena & quot ;. Itu dapat menyebabkan masalah ketika Anda mencoba melakukan XmlPoke, itu akan ke karakter ruang dengan cara yang lucu: dari & quot; ke & amp; quot;
JavierD