我想知道是否有办法用visual studio预编译*.less
个文件(http://www.dotlesscss.org/)。
该网站给了我dotless.compiler.exe
,但我不知道如何将其与视觉工作室挂钩。我正在寻找Webforms和ASP.NET MVC的解决方案。
答案 0 :(得分:20)
根据您的构建环境,您可以将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
文件。
答案 1 :(得分:7)
所有
在使用了这里讨论的所有替代方案并且不满意之后,我为Visual Studio编写了一个LessCss编译器插件。它只需要.less文件并在.less文件更改时生成.css文件。它使用最新最好的less.js编译器。
Download the signed extension.
我刚刚将它提交到VS扩展库。希望很快它会在那里,但在此期间请安装(或编译然后安装)并检查出来。
答案 2 :(得分:3)
每当你想在编译时在你的解决方案中生成一些东西时,T4通常就是这样......
答案 3 :(得分:3)
这是我提出的使用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>
答案 4 :(得分:2)
在开发过程中还有另一种预编译的方法。
无点项目有一个命令行编译器(dotless.Compiler.exe),可以编译和缩小CSS。
您还可以将compiler.exe与--watch参数一起使用,它将继续运行并扫描输入文件以进行更改,每当您对文件进行更改时都会重新生成。从而使您独立于Visual Studio。
答案 5 :(得分:2)
在我寻找使用DotLess时,我也找到了这个库:
http://www.codethinked.com/post/2010/03/17/Bundler-Now-Supports-Css-And-less.aspx
将它添加到我自己的问题中,因为它可能有助于其他人。
答案 6 :(得分:2)
您可能需要查看Chirpy。它比LESS有更多的支持。我希望在写我自己之前就能找到它。
说到这里我还编写了一个使用JS文件(而不是.NET端口)执行的Visual Studio自定义构建工具,您可以在这里查看源代码:https://github.com/paultyng/JsBuildTools
或者它也位于JsBuildTools下的扩展程序库中。