【发布时间】:2014-05-25 00:09:58
【问题描述】:
我在“ASP.NET MVC 5”中有一个项目,并在“bootstrap 3.1.1”中使用“less”,我对文件使用以下库,并最小化这个:
http://www.nuget.org/packages/BundleTransformer.Core/ http://www.nuget.org/packages/BundleTransformer.Less/ http://www.nuget.org/packages/JavaScriptEngineSwitcher.Core/ http://www.nuget.org/packages/JavaScriptEngineSwitcher.Msie/ http://www.nuget.org/packages/MsieJavaScriptEngine/
我在 MVC 4 中有类似的项目,但在 MVC 5 中,当我在 true 中设置 BundleTable.EnableOptimizations 时,如下所示:
public static void RegisterBundles(BundleCollection bundles)
{
BundleTable.EnableOptimizations = true;
出现以下错误,不会用变量解释文件“less”,例如错误是:
Error type: Name
Message: variable @font-family-base is undefined
File: /Content/bootstrap/scaffolding.less
Line number: 29
Column number: 15
Source error:
Line 28: body {
Line 29: font-family: @font-family-base;
-----------------------^
Line 30: font-size: @font-size-base;
但如果我在/Content/bootstrap/scaffolding.less 中包含/导入带有变量的文件:
@import "variables.less";
@import "mixins.less";
错误没有发生,错误继续到下一个文件。
编辑
现在同样的事情发生在我身上,但是使用 ASP.NET MVC 4,这些是我通过 nuget 安装的库。我不明白问题是什么,或者是否发生了兼容问题:
<package id="AjaxMin" version="5.6.5100.19204" targetFramework="net40" />
<package id="AngularJS.Core" version="1.2.16" targetFramework="net40" />
<package id="Antlr" version="3.5.0.2" targetFramework="net40" />
<package id="BundleTransformer.Core" version="1.8.17" targetFramework="net40" />
<package id="BundleTransformer.Less" version="1.8.14" targetFramework="net40" />
<package id="BundleTransformer.MicrosoftAjax" version="1.8.15" targetFramework="net40" />
<package id="FontAwesome" version="4.1.0" targetFramework="net40" />
<package id="JavaScriptEngineSwitcher.Core" version="0.9.5" targetFramework="net40" />
<package id="JavaScriptEngineSwitcher.Msie" version="0.9.5" targetFramework="net40" />
<package id="jQuery" version="1.10.2" targetFramework="net40" />
<package id="Microsoft.AspNet.Mvc" version="4.0.30506.0" targetFramework="net40" />
<package id="Microsoft.AspNet.Mvc.FixedDisplayModes" version="1.0.0" targetFramework="net40" />
<package id="Microsoft.AspNet.Razor" version="2.0.30506.0" targetFramework="net40" />
<package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net40" />
<package id="Microsoft.AspNet.WebApi" version="4.0.30506.0" targetFramework="net40" />
<package id="Microsoft.AspNet.WebApi.Client" version="4.0.30506.0" targetFramework="net40" />
<package id="Microsoft.AspNet.WebApi.Core" version="4.0.30506.0" targetFramework="net40" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="4.0.30506.0" targetFramework="net40" />
<package id="Microsoft.AspNet.WebPages" version="2.0.30506.0" targetFramework="net40" />
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net40" />
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net40" />
<package id="Microsoft.Net.Http" version="2.2.22" targetFramework="net40" />
<package id="Microsoft.Owin" version="2.1.0" targetFramework="net40" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />
<package id="Modernizr" version="2.7.2" targetFramework="net40" />
<package id="MsieJavaScriptEngine" version="1.1.3" targetFramework="net40" />
<package id="Newtonsoft.Json" version="6.0.1" targetFramework="net40" />
<package id="Owin" version="1.0" targetFramework="net40" />
<package id="Twitter.Bootstrap.Less" version="3.1.1" targetFramework="net40" />
<package id="WebActivatorEx" version="2.0" targetFramework="net40" />
<package id="WebGrease" version="1.5.2" targetFramework="net40" />
web.config:
<sectionGroup name="bundleTransformer">
<section name="core" type="BundleTransformer.Core.Configuration.CoreSettings, BundleTransformer.Core" />
<section name="less" type="BundleTransformer.Less.Configuration.LessSettings, BundleTransformer.Less" />
<section name="microsoftAjax" type="BundleTransformer.MicrosoftAjax.Configuration.MicrosoftAjaxSettings, BundleTransformer.MicrosoftAjax" />
</sectionGroup>
<sectionGroup name="jsEngineSwitcher">
<section name="core" type="JavaScriptEngineSwitcher.Core.Configuration.CoreConfiguration, JavaScriptEngineSwitcher.Core" />
</sectionGroup>
...
<handlers>
<add name="LessAssetHandler" path="*.less" verb="GET" type="BundleTransformer.Less.HttpHandlers.LessAssetHandler, BundleTransformer.Less" resourceType="File" preCondition="" />
...
<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd">
<core>
<css defaultMinifier="MicrosoftAjaxCssMinifier">
<minifiers>
<add name="NullMinifier" type="BundleTransformer.Core.Minifiers.NullMinifier, BundleTransformer.Core" />
<add name="MicrosoftAjaxCssMinifier" type="BundleTransformer.MicrosoftAjax.Minifiers.MicrosoftAjaxCssMinifier, BundleTransformer.MicrosoftAjax" />
</minifiers>
<translators>
<add name="NullTranslator" type="BundleTransformer.Core.Translators.NullTranslator, BundleTransformer.Core" enabled="false" />
<add name="LessTranslator" type="BundleTransformer.Less.Translators.LessTranslator, BundleTransformer.Less" />
</translators>
</css>
<js defaultMinifier="MicrosoftAjaxJsMinifier">
<minifiers>
<add name="NullMinifier" type="BundleTransformer.Core.Minifiers.NullMinifier, BundleTransformer.Core" />
<add name="MicrosoftAjaxJsMinifier" type="BundleTransformer.MicrosoftAjax.Minifiers.MicrosoftAjaxJsMinifier, BundleTransformer.MicrosoftAjax" />
</minifiers>
<translators>
<add name="NullTranslator" type="BundleTransformer.Core.Translators.NullTranslator, BundleTransformer.Core" enabled="false" />
</translators>
</js>
</core>
<less useNativeMinification="false" ieCompat="true" strictMath="false" strictUnits="false" dumpLineNumbers="None">
<jsEngine name="MsieJsEngine" />
</less>
</bundleTransformer>
<jsEngineSwitcher xmlns="http://tempuri.org/JavaScriptEngineSwitcher.Configuration.xsd">
<core>
<engines>
<add name="V8JsEngine" type="JavaScriptEngineSwitcher.V8.V8JsEngine, JavaScriptEngineSwitcher.V8" />
<add name="MsieJsEngine" type="JavaScriptEngineSwitcher.Msie.MsieJsEngine, JavaScriptEngineSwitcher.Msie" />
</engines>
</core>
</jsEngineSwitcher>
编辑 05-24-14
BundleConfig.cs 是 Css 配置的一部分:
CssTransformer cssTransformer = new CssTransformer();
NullOrderer nullOrderer = new NullOrderer();
Bundle cssBundle = new CustomStyleBundle(BundleName.Css);
cssBundle.Include("~/Content/bootstrap/bootstrap.less");
cssBundle.Include("~/Content/font-awesome.css");
cssBundle.Include("~/Content/site.less");
cssBundle.Transforms.Add(cssTransformer);
cssBundle.Orderer = nullOrderer;
bundles.Add(cssBundle);
【问题讨论】:
标签: asp.net-mvc less asp.net-mvc-5