Aquí está la solución que se me ocurrió, usando MSBuild. Es incremental, por lo que solo debería suceder cuando cambia Menos. También maneja correctamente @import
.
Primero, agregue dotless a su proyecto con NuGet. No necesita nada de la magia que agrega a su web.config
, por lo que puede revertir eso; solo lo está usando para hacer que el compilador sea ejecutable.
A continuación, añadir sus "raíces" Menos archivos a su .csproj
, así:
<ItemGroup>
<LessCssRootInput Include="example.less" />
</ItemGroup>
Por último, añadir este fragmento en el fondo de su .csproj
:
<ItemGroup>
<LessCssSubInput Include="**\*.less" Exclude="@(LessCssRootInput)" />
<LessCssOutput Include="@(LessCssRootInput -> '%(RelativeDir)\%(Filename).css')" />
</ItemGroup>
<Target Name="CompileLessCss" BeforeTargets="Compile" Inputs="@(LessCssRootInput);@(LessCssSubInput)" Outputs="@(LessCssOutput)">
<Exec Command=""$(SolutionDir)\packages\dotless.1.3.1.0\tool\dotless.compiler.exe" --minify --keep-first-comment @(LessCssRootInput)" />
</Target>
ALL IN ONE LINE es muy importante, de lo contrario obtendrá un error de compilación de MS. El comando exicted con mierda -1. – Sakthivel
Con respecto a la portabilidad: no olvide incluir entre comillas cada parámetro de su comando, ya que las tareas de compilación se ejecutan como un archivo por lotes y el lote no puede manejar los espacios en los nombres de los directorios. Ejemplo: '" $ (ProjectDir) .. \ .. \ .. \ .. \ lib \ dotless \ tool \ dotless.compiler.exe "" $ (ProjectDir) Styles \ Home.less "" $ (ProjectDir) Styles \ Home.css "' – ViRuSTriNiTy