Как мне получить пробелы в MSBuild WebProjectOutputDir? - PullRequest
21 голосов
/ 29 июня 2009

Я пытаюсь вызвать MSBuild из командной строки. Все работало нормально, когда я использовал путь без пробелов, но теперь у меня есть путь с пробелами, и команда не выполняется.

Команда (работает):

"C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe" 
/t:Rebuild "C:\Projects\myProject.csproj" 
/p:OutDir=c:\temp\deploy\funAndGames\Deployment\bin\ 
/p:WebProjectOutputDir=c:\temp\deploy\funAndGames\Deployment\ 
/p:Configuration=Release

Затем я добавил кавычки и изменил OutDir на OutPath (не работает):

"C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe" 
/t:Rebuild "C:\Projects\myProject.csproj" 
/p:OutPath="c:\temp\deploy\funAndGames\Deployment\bin\" 
/p:WebProjectOutputDir="c:\temp\deploy\funAndGames\Deployment\" 
/p:Configuration=Release

Я стремлюсь к чему-то вроде этого (не работает):

"C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe" 
/t:Rebuild "C:\Projects\myProject.csproj" 
/p:OutPath="c:\temp\deploy\fun and games\Deployment\bin\" 
/p:WebProjectOutputDir="c:\temp\deploy\fun and games\Deployment\" 
/p:Configuration=Release

Любая помощь в синтаксисе вокруг OutDir / OutPath и WebProjectOutputDir с пробелами? Является ли это возможным? Если нет, кто-нибудь знает, в чем причина (из-за того, что в некоторых URL нет пробелов?)

Ответы [ 7 ]

23 голосов
/ 03 ноября 2009

Только что нашел ответ на этот старый вопрос. Для обработки пробелов вы должны использовать escape-символ \ во всех папках. В основном

/p:OutPath="c:\temp\deploy\fun and games\Deployment\bin\"

должно быть

/p:OutPath="c:\\temp\\deploy\\fun and games\\Deployment\\bin\\"

и волшебным образом это работает!

5 голосов
/ 28 ноября 2011

Попробуйте добавить " например:

/p:OutPath=""c:\temp\deploy\fun and games\Deployment\bin\""
4 голосов
/ 16 марта 2011

Msbuild также работает с пробелами в OutDir, если вы переключаете \ на /, используя кавычки:

/p:OutDir="c:/temp/deploy/fun and games/out/"
/p:WebProjectOutputDir="c:/temp/deploy/fun and games/Deployment/"
1 голос
/ 18 мая 2015

Если у вас есть несколько параметров в коммутаторе, вы не сможете «избежать» проблемы, исправив путь. То, что вы можете сделать, это поместить ваши параметры переключателя между "some_parameters1 some_parameters2".

Что-то вроде:

<Exec Command="SomeCommand /useMultipleParameterSwitch=&quot;value1:blabla1 | value2:blabla2&quot;"/>

Конечно, многое зависит от синтаксиса переключателей, но это работает для меня и моей команды.

1 голос
/ 12 мая 2014

Для меня рабочее решение:

/ p: SQLCMD = "\" C: \ Program Files \ Microsoft SQL Server \ 100 \ Tools \ Binn \ SQLCMD.EXE \ ""

Другими словами: помещение всей строки в кавычки (внешние кавычки не передаются в качестве значения в MSBuild).

Значение в MSBuild для этого свойства: "C: \ Program Files \ Microsoft SQL Server \ 100 \ Tools \ Binn \ SQLCMD.EXE" (с кавычками).

1 голос
/ 29 июня 2009
> "C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe"
> /t:Rebuild
> "C:\Projects\myProject.csproj" 
/p:OutPath="c:\temp\deploy\funAndGames\Deployment\bin\"
----------------------------------------
/p:WebProjectOutputDir="c:\temp\deploy\fun and games\Deployment\"
----------------------------------------

> /p:Configuration=Release

Попробуйте это.

Также попробуйте через графический интерфейс VSStudio. Затем скопируйте настройки и попробуйте с помощью MS Build.

0 голосов
/ 11 августа 2015

Чтобы сделать это при использовании файла .proj и ваш путь включен в свойства, такие как $ (DeployFolder) и $ (NuGetExe), вы можете использовать «& quot;» как это:

<Exec Command="&quot;$(NuGetExe)&quot; pack -OutputDirectory &quot;$(DeployFolder)&quot;" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...