Как избежать кавычек в команде Exec в MSBuild


131

Я пытаюсь создать сценарий MSBuild, который отображает сетевой диск на букву диска в сценарии, но, к сожалению, путь к целевой папке включает встроенное пространство. Встроенное пространство приводит к сбою сопоставления, и я не знаю, можно ли избежать кавычек вокруг пути. Я пробовал использовать двойные кавычки, но MSBuild это не нравится (либо это, либо Windows XP не нравится). Кто-нибудь знает, как закодировать этого зверя, чтобы карта работала?

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

Вложенное пространство, конечно же, находится в «программных файлах».

Ответы:


192

Используйте &quot;для кодирования двойных кавычек, которые вы хотите netвидеть внутри Commandзначения атрибута:

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

7
Это не помогает, когда у вас есть, Command="quot;$(PathWithTrailingBackslash)&quot;"потому что он отображается как "Path\With\Trailing\Backslash\"и \"является escape-последовательностью командной строки для ", поэтому все последующие аргументы перепутались.
jnm2

@ jnm2 Не могли бы вы просто добавить еще один &quot;после второго? Command="quot;$(PathWithTrailingBackslash)&quot;&quot;"
TetraDev

@TetraDev Значит, обратная косая черта все еще отсутствует, и у вас есть незавершенная цитата, эффект которой я не совсем уверен.
jnm2

84

Вы можете использовать одинарные кавычки для команды, например

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

(Из задачи MSBuild exec без блокировки )


Для меня использование одинарных кавычек вместо & quot; это лучшее решение. Потому что & quot ;. Это может привести к проблемам, когда вы попытаетесь выполнить XmlPoke, поскольку он будет перемещать символы в пробел забавным образом: из & quot; в & amp; quot;
JavierD
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.