6

我正在关注一个示例,并且在为 MVC 项目创建自定义包时无法使“NoTransform”工作。这是我的代码,由于“NoTransform”产生错误,因此无法编译:“错误 1 ​​找不到类型或命名空间名称 'NoTransform'(您是否缺少 using 指令或程序集引用?)” . 有什么想法吗?

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.WebPages;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;

namespace CoyleAzure
{


    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);


            // Added to Add DisplayModes


            DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("Phone")
            {
                ContextCondition = (context => (
                (context.GetOverriddenUserAgent() != null) &&
                (
                (context.GetOverriddenUserAgent().IndexOf("iPhone", StringComparison.OrdinalIgnoreCase) >= 0) ||
                (context.GetOverriddenUserAgent().IndexOf("iPod", StringComparison.OrdinalIgnoreCase) >= 0) ||
                    (context.GetOverriddenUserAgent().IndexOf("Droid", StringComparison.OrdinalIgnoreCase) >= 0) ||
                        (context.GetOverriddenUserAgent().IndexOf("Blackberry", StringComparison.OrdinalIgnoreCase) >= 0) ||
                            (context.GetOverriddenUserAgent().StartsWith("Blackberry", StringComparison.OrdinalIgnoreCase))
            )
            ))
            });






            DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("Tablet")
            {
                ContextCondition = (context => (
                    (context.GetOverriddenUserAgent() != null) &&
                    (
                    (context.GetOverriddenUserAgent().IndexOf("iPad", StringComparison.OrdinalIgnoreCase) >= 0) ||
                    (context.GetOverriddenUserAgent().IndexOf("Playbook", StringComparison.OrdinalIgnoreCase) >= 0) ||
                        (context.GetOverriddenUserAgent().IndexOf("Transformer", StringComparison.OrdinalIgnoreCase) >= 0) ||
                            (context.GetOverriddenUserAgent().IndexOf("Xoom", StringComparison.OrdinalIgnoreCase) >= 0)
                        )
                        ))
            });







            IBundleTransform jsTransformer;
            IBundleTransform cssTransformer;

#if DEBUG
            jsTransformer = new NoTransform("text/javascript");
            cssTransformer = new NoTransform("text/css");


#else   
            jsTransformer = new JsMinify();   
            cssTransformer = new CssMinify(); 
#endif

            var
            DesktopJSBundle = new Bundle("~/Scripts/DesktopJS", jsTransformer);

            DesktopJSBundle.Include("~/Scripts/jquery-1.6.4. js");
            DesktopJSBundle.Include("~/Scripts/jquery-ui-1.8.11. js");
            DesktopJSBundle.Include("~/Scripts/jquery.unobtrusive-ajax.js");
            DesktopJSBundle.Include("~/Scripts/jquery.validate.js");
            DesktopJSBundle.Include("~/Scripts/jquery.validate.unobtrusive.js");

            BundleTable.Bundles.Add(DesktopJSBundle);

            var DesktopCSSBundle = new Bundle("~/Content/DesktopCSS", cssTransformer);
            DesktopCSSBundle.Include("~/Content/Site.css");
            BundleTable.Bundles.Add(DesktopCSSBundle);



            var MobileJSBundle = new Bundle("~/Scripts/MobileJS", jsTransformer);
            MobileJSBundle.Include("~/Scripts/jquery-1.6.4.js");
            MobileJSBundle.Include("~/Scripts/jquery.mobile-1.1.0.js");
            BundleTable.Bundles.Add(MobileJSBundle);

            var MobileCSSBundle = new Bundle("~/Content/MobileCSS", cssTransformer);
            MobileCSSBundle.Include("~/Content/jquery.mobile-1.1.0.css");
            MobileCSSBundle.Include("~/Content/jquery.mobile.structure-1.1.0.css");
            BundleTable.Bundles.Add(MobileCSSBundle);
            //BundleTable.Bundles.RegisterTemplateBundles(); 
            BundleTable.Bundles.EnableDefaultBundles();
        }




        //BundleConfig.RegisterBundles(BundleTable.Bundles);




    }
}
4

4 回答 4

7

不是对此的直接答案,而是向将来遇到此问题的任何人指出...也可以通过配置完成(请参阅https://stackoverflow.com/a/12605451/6486

<system.web>
    <compilation debug="true" />
    <!-- Lines removed for clarity. -->
</system.web>
于 2012-09-26T15:43:42.797 回答
7

该类NoTransform不再需要是公共的,因为从 RC 开始,一个空TransformBundle隐含地意味着NoTransform.

前:

new Bundle("~/yourbundle", new NoTransform())

现在:

new Bundle("~/yourbundle")

我们觉得不需要虚拟实例更干净。我们将其保留在内部是因为它有一点点逻辑可能会导致一些麻烦,因为 Transform 负责设置响应的 contentType。默认逻辑使用包中第一个文件的文件扩展名 (.js/.css)。

此外,通过添加 Script/Styles Render 助手,您不再需要根据 debug=true|false 在不同的转换之间动态切换。助手应该为你处理好这些。

于 2012-06-29T23:38:14.013 回答
3

此代码来自 MVC 4 Beta(或更准确地说是 System.Web.Optimization beta1),但您可能正在尝试使用 MVC 4 RC(或更准确地说是 System.Web.Optimization beta2)(如果完全是 MVC 4)编译它。在 MVC 4 中,RCNoTransforminternal.

于 2012-06-14T01:49:19.827 回答
1

NoTransform和其他方法Scripts,如Styles.. 是 MVC 4 beta 和 MVC 4 RC 版本中提供的捆绑和缩小的新功能。我希望您没有使用正确版本的 ASP.NET MVC,因此您会遇到编译错误。

http://blog.kurtschindler.net/post/disabling-bundling-and-minification-in-aspnet-45mvc-4

于 2012-06-13T02:37:35.397 回答