0

我正在尝试使用构建脚本来运行 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.  

我怀疑这与我的项目受源代码管理有关,或者只是文件路径在“源代码管理”文件夹中有一个空间。

如何将路径括在引号中(因为命令本身在引号中)?

如果它是源代码控制因素并且由于文件被锁定而失败(我尝试使用签入的文件进行构建)..我该如何处理?我显然想让我的项目处于源代码控制之下。

4

1 回答 1

1

您可以在 MSBuild files, inc.中使用""和互换。''对于带有空格的路径,最坏的情况可能需要 XML 转义,例如&quot;. 为了在退出代码之外获得更好的输出,请尝试将详细程度提高到详细或诊断,可能与它有关[MSBuild],不应该是一个$()属性吗?

于 2012-12-11T15:47:25.680 回答