I am trying to call MSBuild from a command line. Everything was working fine when I was using a path that had no spaces, but now I have a path that has spaces and the command is failing.
Command (works):
"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
I then added quotes and changed OutDir to OutPath (doesn't work):
"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
What I am aiming for is something like this (doesn't work):
"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
Any help on the syntax around OutDir/OutPath and WebProjectOutputDir with spaces? Is it possible? If it isn't does anyone know what the reason is (due to some Url's not having spaces type thing?)
Try add
"
ex:For me the working solution is:
/p:SQLCMD="\"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE\""
In other words: Putting all the string into quotes (the external quotes aren't passed as value to MSBuild).
The value inside MSBuild for this property is: "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" (with the quotes).
If you have multiple parameters in a switch you can't really 'avoid' the problem by fixing the path. What you can do is put your parameters of the switch between " some_parameters1 some_parameters2 ".
Something like:
Of course a lot depends of the syntax of the switches but that works for me and my team.
Try this.
Also try via VSStudio GUI. Then copy the settings & try with MS Build.
Just found this out an answer to this old question. To handle spaces, you should use the escape character \ on all folders. Basically
should be
and magically it works!
To do this when using a .proj file and your path is included in properties like $(DeployFolder) and $(NuGetExe), you can use """ like this: