我想从命令行调用的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语法带有空格的任何帮助吗? 可能吗? 如果不是没有人知道是什么原因(由于一些网址没有空间式的东西?)
刚刚发现这一点回答这个老问题。 要处理的空间,你应该使用转义字符\上的所有文件夹。 基本上
/p:OutPath="c:\temp\deploy\fun and games\Deployment\bin\"
应该
/p:OutPath="c:\\temp\\deploy\\fun and games\\Deployment\\bin\\"
而神奇的工作!
尝试添加"
例如:
/p:OutPath=""c:\temp\deploy\fun and games\Deployment\bin\""
MSBUILD也似乎如果切换\到/,而使用引号与在OUTDIR空间工作:
/p:OutDir="c:/temp/deploy/fun and games/out/"
/p:WebProjectOutputDir="c:/temp/deploy/fun and games/Deployment/"
> "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尝试建立。
对我来说,工作的解决方案是:
/ P:SQLCMD = “\” C:\ Program Files文件\ Microsoft SQL Server的\ 100个\工具\ BINN \ SQLCMD.EXE \ “”
换句话说:把所有的串入引号(外部引号不是值传递到MSBuild的)。
该物业内的MSBuild值是: “C:\ Program Files文件\ Microsoft SQL Server的\ 100个\工具\ BINN \ SQLCMD.EXE”(带引号)。
如果你有一个开关多个参数,你不能真正通过固定的路径“避免”的问题。 你可以做的是把你的交换机的参数“some_parameters1 some_parameters2”之间。
就像是:
<Exec Command="SomeCommand /useMultipleParameterSwitch="value1:blabla1 | value2:blabla2""/>
当然,在很大程度上取决于开关的语法但对我的作品和我的团队。
要使用时,.proj文件,你的路径包括在像$(DeployFolder)和$(NuGetExe)的属性,你可以用做“&QUOT;” 像这样:
<Exec Command=""$(NuGetExe)" pack -OutputDirectory "$(DeployFolder)"" />