2010-03-10 2 views
110

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

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

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

ответ

166

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

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

Это не помогает, когда у вас есть 'Command = 'quot; $ (PathWithTrailingBackslash) "" ' , потому что он отображает как« Путь \ С \ Трейлинг \ Обратное сглаживание »и« \ »- строка escape-последовательности для '' ', поэтому все следующие аргументы перепутаны. – jnm2

64

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

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

(Из MSBuild exec task without blocking)

+1

Работает, спасибо – SteveC

0

Для меня использовать одинарные кавычки вместо " это лучшее решение. Потому что ". Это может привести к проблемам при попытке сделать XmlPoke, его перемещение в символы пробела смешно: от " до & quot;

Смежные вопросы