c# - Dotless - 无法使用 MVC Bundling 在单独的文件中引用更少的变量

标签 c# less bundling-and-minification dotless

我希望我没有创建重复的主题,但我已经搜索了两天,但找不到解决方案。

我们正在 MVC4 中开始一个新项目,我们加载了较低版本的 bootstrap。我遇到的问题是当我尝试引用 bootstrap.less、我的 global.less 或当前文件之外的任何内容时的一些类或变量。我可以在当前文件的顶部创建一个变量并使用它就好了,但是如果我想使用一个单独文件中的东西,我必须 @import 它。如果我的整个应用程序的 less 都在一个文件中,这会很好,但我必须将 4+ 个文件@import 到我创建的每个页面/部分 less 文件中。

我添加了来自 https://gist.github.com/2002958 的 MVC4 捆绑添加

正如我所看到的,问题在于每个文件都是独立评估并转换为 css 的。我试图简化这个过程,并从 less 包中的所有文件构建一个大量的 less 字符串,然后转换它们 (Less.Parse(lessString)),但我收到错误:

"You are importing a file ending in .less that cannot be found"

所以这是我的最终问题:有没有一种方法可以在不引用物理文件的情况下简单地解析 less 字符串?那将解决我的问题。

如果由于某种奇怪的原因无法做到这一点,是否已经存在一个我不知道的组件或过程实际上在缩小文件之前将文件捆绑在一起?

任何有关此主题的信息都将不胜感激,因为我正在原地打转,试图让它发挥作用。

这个问题也发在了Dotless群:
https://groups.google.com/forum/?fromgroups#!topic/dotless/j-8OP1dNjUY

最佳答案

这个解决方案对我有用:

我有两个 NuGet 包:
- 无点
- 用于 system.web.optimization 的无点适配器

在我的 web.config 中,我有这些行:

<configuration>
    <configSections>
        <section name="dotless" 
                 type="dotless.Core.configuration.DotlessConfigurationSectionHandler, dotless.Core" />
    </configSections>
    <system.web>
        <httpHandlers>
            <add path="*.less"
                 verb="GET"
                 type="dotless.Core.LessCssHttpHandler, dotless.Core" />
        </httpHandlers>
    </system.web>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <handlers>
            <add name="dotless" 
                 path="*.less" 
                 verb="GET" 
                 type="dotless.Core.LessCssHttpHandler,dotless.Core" 
                 resourceType="File" 
                 preCondition="" />
        </handlers>
    </system.webServer>
    <dotless minifyCss="true" cache="true" web="false" disableParameters="true" />
</configuration>

请注意,您应该根据需要定义无点参数。

BundleConfig.cs 中:

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new LessBundle("~/bundles/styles/").Include("~/Content/site.less"));
    BundleTable.EnableOptimizations = true; // false if you want to debug css
}

最后,Site.less:

/* I have to redefine some bootstrap mixins and variables,
   so importing bootstrap and extending happens here: */
@import "bootstrap-extends.less";

/* all other needed less should be included here too, for example:
   @import "admin.less";
   @import "controls.less";
   etc
*/

body {

}

site.lessbootstrap-extends.less 位于 Content 文件夹中。 bootstrap-extends 包含所有需要的 @import 指令,这些指令通常列在 ~/Content/bootstrap/bootstrap.less 中。

关于c# - Dotless - 无法使用 MVC Bundling 在单独的文件中引用更少的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13403346/

相关文章:

javascript - 如何在我们的 mvc3 web 应用程序的产品构建中删除 JS 日志记录调用?

c# - 使用委托(delegate)发送字符串

html - 法语 Google 字体在具有相同浏览器的不同设备上不一致

c# - 从 Controller 操作中手动捆绑和缩小 JS

linux - 更少的 ubuntu CSS(和自动编译)?

css - 不要使用 LESS/CSS 压缩器将 '0px' 压缩到 '0'

javascript - RequireJS 捆绑配置与与模块捆绑

c# - 为什么我选择的值在下拉列表中显示两次 (asp.net mvc)

c# - EPPlus 公式未运行

c# - 将右键单击发送到窗口