Подтвердить что ты не робот

Как у меня есть пробелы в MSBuild WebProjectOutputDir?

Я пытаюсь вызвать 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 не имеет вещи типа пробела?)

4b9b3361

Ответ 1

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

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

должен быть

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

и магически это работает!

Ответ 2

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

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

Ответ 3

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

/p:OutDir="c:/temp/deploy/fun and games/out/"
/p:WebProjectOutputDir="c:/temp/deploy/fun and games/Deployment/"

Ответ 4

> "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 GUI. Затем скопируйте настройки и попробуйте с помощью MS Build.

Ответ 5

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

/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" (с кавычками).

Ответ 6

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

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

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

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

Ответ 7

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

<Exec Command="&quot;$(NuGetExe)&quot; pack -OutputDirectory &quot;$(DeployFolder)&quot;" />