标签: asp.net-optimization

MVC4 Less Bundle @import目录

我正在尝试使用MVC4捆绑来对一些较少的文件进行分组,但看起来我正在使用的导入路径已关闭.我的目录结构是:

static/
    less/
        mixins.less
        admin/
            user.less
Run Code Online (Sandbox Code Playgroud)

在user.less中,我正在尝试使用以下方法导入mixins.less:

@import "../mixins.less";
Run Code Online (Sandbox Code Playgroud)

这曾经在我使用chirpy和无点之前为我工作,但现在我注意到ELMAH对我生气,说:

System.IO.FileNotFoundException: 
    You are importing a file ending in .less that cannot be found.
File name: '../mixins.less'
Run Code Online (Sandbox Code Playgroud)

我应该@import和MVC4 使用不同的吗?

一些额外的信息

这是我用来尝试这个的较少的类和global.asax.cs代码:

LessMinify.cs

...
public class LessMinify : CssMinify
{
    public LessMinify() {}

    public override void Process(BundleContext context, BundleResponse response)
    {
        response.Content = Less.Parse(response.Content);
        base.Process(context, response);
    }
}
...
Run Code Online (Sandbox Code Playgroud)

Global.asax.cs

...
DynamicFolderBundle lessFB = 
    new DynamicFolderBundle("less", new LessMinify(), "*.less");

BundleTable.Bundles.Add(lessFB);

Bundle AdminLess = new Bundle("~/AdminLessBundle", new LessMinify());
...
AdminLess.AddFile("~/static/less/admin/user.less");
BundleTable.Bundles.Add(AdminLess); …
Run Code Online (Sandbox Code Playgroud)

import bundle less asp.net-mvc-4 asp.net-optimization

51
推荐指数
5
解决办法
2万
查看次数

MVC4捆绑CSS失败意外令牌,发现'@import'

我正在尝试使用捆绑来组合和缩小一些CSS文件.在我的Global.aspx.cs中,Application_Start我有以下内容:

    var jsBundle = new Bundle("~/JSBundle", new JsMinify());
    jsBundle.AddDirectory("~/Scripts/", "*.js", false);
    jsBundle.AddFile("~/Scripts/KendoUI/jquery.min.js");
    jsBundle.AddFile("~/Scripts/KendoUI/kendo.web.min.js");
    BundleTable.Bundles.Add(jsBundle);

    var cssBundle = new Bundle("~/CSSBundle", new CssMinify());
    cssBundle.AddDirectory("~/Content/", "*.css", false);
    cssBundle.AddDirectory("~/Content/themes/base/", "*.css", false);
    cssBundle.AddFile("~/Styles/KendoUI/kendo.common.min.css");
    cssBundle.AddFile("~/Styles/KendoUI/kendo.default.min.css");
    BundleTable.Bundles.Add(cssBundle);
Run Code Online (Sandbox Code Playgroud)

在我的.cshtml文件中,我有以下内容:

<link href="/CSSBundle" rel="stylesheet" type="text/css" />
<script src="/JSBundle" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

但是,当我查看我的bundle CSS文件的源代码时,它具有以下内容:

/* Minification failed. Returning unminified contents.
(40,1): run-time error CSS1019: Unexpected token, found '@import'
(40,9): run-time error CSS1019: Unexpected token, found '"jquery.ui.base.css"'
Run Code Online (Sandbox Code Playgroud)

......还有更多

关于如何解决这个问题的任何想法?

我确实将它缩小到以下行:

cssBundle.AddDirectory("~/Content/themes/base/", "*.css", false);
Run Code Online (Sandbox Code Playgroud)

如果我只有那行代码,我会得到相同的错误.

c# asp.net-mvc bundle asp.net-optimization

51
推荐指数
2
解决办法
3万
查看次数

VS2012 - Web表单 - 捆绑混乱

我通过Visual Studio 2012创建了一个新的ASP.NET Web窗体项目.不幸的是,默认的Site.Master文件非常混乱.(我将这些问题一起发布,因为它们非常相关并且引用了相同的代码.)

首先,我已经了解了捆绑和缩小的目的,因此无需讨论.但是我不明白脚本被包含在默认母版页中的方式.

问题1:
为什么在BundleConfig.cs文件中创建了一个名为"〜/ bundles/WebFormsJs"的包,但是在主页中,这些相同的单个.js文件中的每一个都在ScriptManager中逐一列出?

在BundleConfig.cs中:

bundles.Add(new ScriptBundle("~/bundles/WebFormsJs").Include(
              "~/Scripts/WebForms/WebForms.js",
              "~/Scripts/WebForms/WebUIValidation.js",
              "~/Scripts/WebForms/MenuStandards.js",
              "~/Scripts/WebForms/Focus.js",
              "~/Scripts/WebForms/GridView.js",
              "~/Scripts/WebForms/DetailsView.js",
              "~/Scripts/WebForms/TreeView.js",
              "~/Scripts/WebForms/WebParts.js"));
Run Code Online (Sandbox Code Playgroud)

Inside Site.Master:

<body>
<form runat="server">
<asp:ScriptManager runat="server">
    <Scripts>
        <%--Framework Scripts--%>
        <asp:ScriptReference Name="MsAjaxBundle" />
        <asp:ScriptReference Name="jquery" />
        <asp:ScriptReference Name="jquery.ui.combined" />
        <asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" />
        <asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" />
        <asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" />
        <asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" />
        <asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" />
        <asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" />
        <asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" />
        <asp:ScriptReference …
Run Code Online (Sandbox Code Playgroud)

asp.net webforms visual-studio-2012 asp.net-optimization

51
推荐指数
1
解决办法
2万
查看次数

捆绑.js文件与CDN

为了提高网页的性能,我们建议使用CDN来提供.js网页上的文件.那讲得通.

此外,我们建议捆绑我们的.js文件,以减少加载时对服务器的请求数.

因此,如果我们使用CDN或捆绑.js文件,我们需要坐下来做出决定.

优缺点都有什么?哪些更有意义?

javascript asp.net resourcebundle cdn asp.net-optimization

47
推荐指数
2
解决办法
8026
查看次数

Cassette捆绑包与MVC4捆绑包

我目前正在研究ASP.NET MVC 3原型解决方案,该解决方案将用作多个项目重写的基础(来自Web表单).

我的目标之一是跨应用程序实现一些脚本管理,而不是我们现在拥有的任何脚本管理.

MVC 3有一个缺陷恕我直言:如果您需要在部分视图或模板视图上指定特定脚本 - 您可能最终要么失去对呈现HTML中脚本块所在位置的控制,要么必须在父视图上指定每个依赖的javascript文件.

我一直在认真考虑使用http://getcassette.net/作为解决所述问题的框架.然而,MVC4 beta的最新版本让我再次怀疑自己:MVC的Bundles看起来与Cassette的Bundles非常相似,我又感到困惑:

  1. 我现在应该实现盒式磁带而不是迁移到MVC4捆绑包吗?

  2. 我应该自己实现一些简化的脚本管理器(比如MVC4预览中的Scripts helper类)然后迁移到MVC4

  3. 或者我应该将盒式磁带集成到项目中,并希望它比MVC的实现更具有前瞻性(我现在真的不喜欢这个选项,仅仅因为盒式磁带附带了大量的依赖性).

我没有Cassette本身的经验,发现很难自己进行比较,并且会欣赏任何答案或提示.

编辑: 我只是想到还有另一种选择:为MVC捆绑安装beta nuget包:https://nuget.org/packages/Microsoft.Web.Optimization

结论: 我对MVC4捆绑实现的看法越多,我注意到的差异越大:MVC4捆绑包不能解决上面描述的MVC3问题 - 它们只是捆绑和缩小.此外,盒式磁带不仅能够在特定位置呈现脚本标签,而且还能够以正确的顺序对它们进行排序,这不是一件容易的事.所以目前我对这两种解决方案都不满意,我会尝试提出自己的简约实施,希望将来情况有所改善.

但是,如果你不害怕在你的项目中添加5个以上的依赖项和一堆web.config更改 - 去卡带.我希望它会在某些时候更新,以利用内部的MVC捆绑来减少功能重复,并且希望将变得更加模块化.


更新: 从Cassette 2.0版开始,如果你只需要捆绑和js依赖解析,就不再需要包含咖啡脚本和Cassette的其他功能.所以在这一点上,卡塞特对我来说是一个明显的赢家.

javascript asp.net asp.net-mvc asp.net-mvc-4 asp.net-optimization

43
推荐指数
2
解决办法
7588
查看次数

MVC4 - 当优化设置为true时,Bundling不起作用

我想知道我在这里做的不正确.我正在使用ASP.NET C#MVC4,我想使用新的css/js优化功能.

这是我的HTML部分

@Styles.Render("~/content/css")
Run Code Online (Sandbox Code Playgroud)

这是我的BunduleConfig.cs一部分

bundles.Add(new StyleBundle("~/content/css").Include(
                        "~/content/css/reset.css",
                        "~/content/css/bla.css"));

// BundleTable.EnableOptimizations = true;
Run Code Online (Sandbox Code Playgroud)

输出(工作):

<link href="/content/css/reset.css" rel="stylesheet"/>
<link href="/content/css/bla.css" rel="stylesheet"/>
Run Code Online (Sandbox Code Playgroud)

但是当我取消注释BundleTable.EnableOptimizations = true;html输出时看起来像这样

<link href="/content/css?v=5LoJebKvQJIN-fKjKYCg_ccvmBC_LF91jBasIpwtUcY1" rel="stylesheet"/>
Run Code Online (Sandbox Code Playgroud)

这当然是404.我不知道我做错了什么,请帮助,第一次使用MVC4.

c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-optimization

43
推荐指数
2
解决办法
4万
查看次数

使ASP.NET捆绑为CSS捆绑指定media = screen

我只是尝试ASP.NET 4.5捆绑和缩小,并遇到了一个问题.

我有大约10个css文件,其中2个最初在布局中使用属性media ="screen"引用.

由于将css添加到bundle的语法不允许你指定应该添加这样的属性(有意义,因为该属性将适用于整个bundle),我希望看到@ Styles.Render的重载,允许我指定html属性,就像在其他Html助手中一样,但没有.

有一个丑陋的解决方案,因为我知道创建的bundle的url,我可以自己制作标签,但是我会失去ASP.NET处理的缓存机制,允许它自己渲染标签.

有没有办法做到这一点,我错过了什么?或者这仅仅是对设计团队的监督?

asp.net-mvc asp.net-mvc-4 bundling-and-minification asp.net-optimization

42
推荐指数
3
解决办法
2万
查看次数

使用MVC4 Bundling和HTML5异步属性异步加载javascript文件

HTML5具有脚本文件的异步属性,以启用异步加载.

<script type="text/javascript" src="myScript.js" async></script>
Run Code Online (Sandbox Code Playgroud)

我可以通过引用我的MVC4捆绑来利用这一点,就像这样引用捆绑包.

<script type="text/javascript" src='@Scripts.Url("~/bundles/jquery")' async></script>
Run Code Online (Sandbox Code Playgroud)

但这意味着我的脚本即使在调试模式下也是捆绑在一起的.

那么我怎样才能在调试时利用捆绑和异步属性而不会失去非缩小.

html5 asp.net-mvc-4 bundling-and-minification asp.net-optimization

38
推荐指数
1
解决办法
2万
查看次数

ASP.NET MVC4捆绑Twitter Bootstrap

我正在尝试使用Twitter引导程序在MVC 4中使用新的捆绑功能,在我看来,像css的字形png文件的路径以某种方式搞砸了.继承我的代码:

 bundles.Add(new StyleBundle("~/bundles/publiccss").Include(
            "~/Static/Css/bootstrap/bootstrap.css",
            "~/Static/Css/bootstrap/bootstrap-padding-top.css",
            "~/Static/Css/bootstrap/bootstrap-responsive.css",
            "~/Static/Css/bootstrap/docs.css"));


        bundles.Add(new ScriptBundle("~/bundles/publicjs").Include(
            "~/Static/Js/jquery-1.7.2.js",
            "~/Static/Js/bootstrap/bootstrap.js",
            "~/Static/Js/cookie/jquery.cookie.js"));
Run Code Online (Sandbox Code Playgroud)

我没有在按钮上看到任何图标,同样如此.我在这里做错了吗?有什么建议?

asp.net asp.net-mvc-4 twitter-bootstrap bundling-and-minification asp.net-optimization

37
推荐指数
3
解决办法
2万
查看次数

System.Web.Optimization和Microsoft.Web.Optimization将不会在vs 2012中加载引用

我正在开发一个在Visual Studio 2010中启动的MVC 4项目.现在我正在使用Visual Studio 2012开发一台机器,因为我无法访问我最初使用的机器.我整个上午都试着找到答案,但它们似乎对我的情况没有帮助.

我按照如何为MVC-3-converted-to-4 app添加对System.Web.Optimization的引用,并从nuget安装到我的解决方案中.即使我已经在我的机器上下载并安装了所有必需的参考包,System.Web.Optimization仍然会一直缺失.还有什么我可以做的吗?

编辑:当我尝试构建项目时,我收到以下错误

  • 名称空间'System.Web'中不存在类型或命名空间名称'Optimization'(您是否缺少程序集引用?) - BundleConfig.cs
  • 名称空间'System.Web'中不存在类型或命名空间名称'Optimization'(您是否缺少程序集引用?) - Global.asax.cs
  • 找不到类型或命名空间'BundleCollection'(您是否缺少using指令或程序集引用?) - BundleConfig.cs

我的BundleConfig.cs包含

using System.Web;
using System.Web.Optimization;

namespace BCCDC_AdminTool
{
    public class BundleConfig
    {
     // For more information on Bundling, visit http://go.microsoft.com/fwlink/?    LinkId=254725
    public static void RegisterBundles(BundleCollection bundles)
    {
           bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));

           bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                    "~/Scripts/jquery-ui-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.unobtrusive*",
                    "~/Scripts/jquery.validate*"));

        // Use the development version of Modernizr to develop with and learn from. Then, when you're
        // ready for production, use …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-optimization

31
推荐指数
6
解决办法
6万
查看次数