Visual studio - прекомпиляция - без точек - PullRequest
26 голосов
/ 01 февраля 2010

Интересно, есть ли способ предварительно скомпилировать *.less файлы (http://www.dotlesscss.org/) с Visual Studio.

Сайт дает мне dotless.compiler.exe, но я не уверен, как подключить это к визуальной студии. Я ищу решение для веб-форм и ASP.NET MVC.

Ответы [ 7 ]

20 голосов
/ 02 февраля 2010

В зависимости от вашей среды сборки вы можете запустить dotless.Compiler.exe как задачу сборки.

Например, с помощью задачи предварительной сборки в Visual Studio (всего 1 строка):

$(SolutionDir)Tools\dotLess\dotless.compiler.exe -m 
    $(ProjectDir)content\css\site.less $(ProjectDir)content\css\site.css

Макросы ($(SolutionDir) и т. Д.) Позволяют немного гибко проектировать и размещать файлы. Вместо использования стандартных файлов .less просто укажите новые файлы .css в разметке.

7 голосов
/ 29 августа 2011

All

После использования практически всех обсуждаемых здесь альтернатив и неудовлетворенности я написал дополнение компилятора LessCss для Visual Studio. Он принимает файлы .less и создает файлы .css только при изменении файла .less. Он использует самый последний и самый лучший компилятор less.js.

См. Здесь в использовании .

Загрузите подписанное расширение.

Исходный код здесь.

Я только что отправил его в галерею расширений VS. Надеюсь, он скоро появится, но пока установите (или скомпилируйте, а затем установите) и проверьте его.

3 голосов
/ 28 ноября 2012

Вот решение, которое я придумал, используя 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="&quot;$(SolutionDir)\packages\dotless.1.3.1.0\tool\dotless.compiler.exe&quot; --minify --keep-first-comment @(LessCssRootInput)" />
</Target>
3 голосов
/ 01 февраля 2010

Фил Хаак на помощь: http://haacked.com/archive/2009/12/02/t4-template-for-less-css.aspx

Всякий раз, когда вы хотите, чтобы что-то было сгенерировано в вашем решении во время компиляции, T4 - это обычно путь ...

2 голосов
/ 06 февраля 2012

Возможно, вы захотите взглянуть на Chirpy . У него гораздо больше поддержки, чем просто МЕНЬШЕ. Я бы хотел найти его до того, как напишу свой.

Говоря о том, что я также написал инструмент Visual Studio Custom Build Tool, который выполняется с использованием файла JS (вместо порта .NET), вы можете взглянуть на источник здесь: https://github.com/paultyng/JsBuildTools

Или это также в галерее расширений под JsBuildTools .

2 голосов
/ 15 апреля 2010

В поисках работы с DotLess я также нашел эту библиотеку:

http://www.codethinked.com/post/2010/03/17/Bundler-Now-Supports-Css-And-less.aspx

Добавив ее в свой вопрос, потому что она может помочь другим.

2 голосов
/ 15 апреля 2010

Существует также другой способ прекомпиляции во время разработки.

Проект dotless содержит компилятор командной строки (dotless.Compiler.exe), который может компилировать и минимизировать CSS.

Вы также можете использовать файл compiler.exe с параметром --watch, в котором он будет продолжать работать и проверять ваш входной файл на наличие изменений, восстанавливая каждый раз, когда вы вносите изменения в файл. Это делает вас независимым от Visual Studio.

...