我尝试使用构建脚本来运行dotless.compiler.exe,以便在构建时将我的.less文件编译成.min.css:
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/MsBuild/2003">
<!--
This MSBuild Script will compile all [*.less] files in the /CSS folder to their [*.min.css] counterparts.
-->
<ItemGroup>
<LessFiles Include="Styles\*.less" />
</ItemGroup>
<Target Name="CompileDotlessCss" AfterTargets="AfterBuild">
<ItemGroup>
<Binaries Include="*.dll;*.exe"/>
</ItemGroup>
<!-- Compile dotLess CSS into minified full CSS -->
<Exec Command="[MSBuild]\dotless.compiler.exe -m %(LessFiles.FullPath) $([System.String]::Copy('%(LessFiles.FullPath)').Replace('.less','.min.css'))" />
</Target>
</Project>但是当我构建的时候,我得到了:
The command "[MSBuild]\dotless.compiler.exe -m C:\Source Control\MyProject\MyProject.Web\Styles\main.less C:\Source Control\MyProject\MyProject.Web\Styles\main.min.css" exited with code -1. 我怀疑这要么与我的项目处于源代码管理之下有关,要么只是因为文件路径在“源代码管理”文件夹中有一个空格。
如何将路径括在引号中(因为命令本身在引号中)?
如果是源代码控制因素,并且因为文件被锁定而失败(我尝试在文件签入的情况下进行构建)..我该如何处理这件事?显然,我希望将我的项目保持在源代码控制之下。
发布于 2012-12-11 23:47:26
您可以在MSBuild文件中交替使用""和''。对于带有空格的路径,最坏的情况可能需要像"这样的XML转义。为了获得比退出代码更好的输出,尝试将冗长设置为detailed or diagnostic,这可能与[MSBuild]有关,它不应该是$()属性吗?
https://stackoverflow.com/questions/13808100
复制相似问题