gpt4 book ai didi

asp.net-mvc-4 - 如何使用 ASP.Net MVC 4 在 Release模式下 bundle LESS 文件?

转载 作者:行者123 更新时间:2023-12-02 20:13:50 26 4
gpt4 key购买 nike

我试图在我的 Web 项目中包含 LESS 文件,并让 MVC 4 bundle 功能调用 dotLess 库,将 LESS 转换为 CSS,然后缩小结果并将其提供给浏览器。

我在ASP.NET site上找到了一个例子(在LESS、CoffeeScript、SCSS、Sass Bundling 标题下。)。这给了我一个LessTransform类看起来像这样:

public class LessTransform : IBundleTransform
{
public void Process(BundleContext context, BundleResponse response)
{
response.Content = dotless.Core.Less.Parse(response.Content);
response.ContentType = "text/css";
}
}

这行在我的 BundleConfig 中类:

bundles.Add(new Bundle(
"~/Content/lessTest",
new LessTransform(),
new CssMinify()).Include("~/Content/less/test.less"));

最后,我的 _Layout.cshtml 中的 <head> 中有以下行:

@Styles.Render("~/Content/lessTest")

如果我的站点处于 Debug模式,则会将其呈现给浏览器:

<link href="/Content/less/test.less" rel="stylesheet"/>

应用 .less 文件中的规则,点击该链接将显示 LESS 已正确转换为 CSS。

但是,如果我将网站置于 Release模式,则会呈现以下内容:

<link href="/Content/less?v=lEs-HID6XUz3s2qkJ35Lvnwwq677wTaIiry6fuX8gz01" rel="stylesheet"/>

.less 文件中的规则应用,因为点击链接会导致 IIS 出现 404 错误。

因此, bundle 似乎出了问题。我如何让它在 Release模式下工作,或者如何找出到底出了什么问题?

最佳答案

作为 accepted answer 的补充,我创建了一个 LessBundle 类,它是 StyleBundle 类的 Less 等价物。

LessBundle.cs代码是:

using System.Web.Optimization;

namespace MyProject
{
public class LessBundle : Bundle
{
public LessBundle(string virtualPath) : base(virtualPath, new IBundleTransform[] {new LessTransform(), new CssMinify()})
{

}

public LessBundle(string virtualPath, string cdnPath)
: base(virtualPath, cdnPath, new IBundleTransform[] { new LessTransform(), new CssMinify() })
{

}
}
}

用法与StyleBundle类类似,指定LESS文件而不是CSS文件。

将以下内容添加到您的 BundleConfig.RegisterBundles(BundleCollection) 方法中:

bundles.Add(new LessBundle("~/Content/less").Include(
"~/Content/MyStyles.less"));

更新

这个方法在关闭优化的情况下工作得很好,但是当优化打开时我遇到了一些小问题(CSS 资源路径)。经过一个小时研究这个问题后,我发现我有 reinvented the wheel...

如果您确实需要我上面描述的LessBundle功能,请查看System.Web.Optimization.Less .

可以找到 NuGet 包 here .

关于asp.net-mvc-4 - 如何使用 ASP.Net MVC 4 在 Release模式下 bundle LESS 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15252829/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com