Вот решение, которое я придумал, используя MSBuild. Это инкрементное, поэтому это должно происходить только при изменении Less. Он также правильно обрабатывает @import
.
Во-первых, добавьте без точек в ваш проект с NuGet. Вам не нужно никакого волшебства, которое оно добавляет к вашему web.config
, поэтому вы можете отменить это - вы просто используете его, чтобы получить исполняемый файл компилятора.
Затем добавьте свои "root" Less файлы в .csproj
, например:
<ItemGroup>
<LessCssRootInput Include="example.less" />
</ItemGroup>
Наконец, добавьте этот фрагмент внизу вашего .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>