2012-06-12 33 views
6

Tôi đang theo dõi một ví dụ và không thể nhận được "NoTransform" để hoạt động khi tạo gói tùy chỉnh cho dự án MVC. Đây là mã của tôi sẽ không biên dịch vì "NoTransform" sinh ra một lỗi nói rằng "Lỗi 1 Không thể tìm thấy loại hoặc tên không gian tên 'NoTransform' (bạn đang thiếu một chỉ thị sử dụng hoặc tham chiếu assembly?)" . Có suy nghĩ gì không?NoTransform không hoạt động khi cố gắng tạo Gói mới

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); 




    } 
} 
+0

phiên bản asp.net mvc ru sử dụng? – VJAI

Trả lời

1

Các NoTransform và các phương pháp khác như Scripts, Styles .. là những tính năng mới của bundling và việc rút gọn mà có sẵn trong MVC 4 beta và MVC 4 phiên bản RC. Tôi hy vọng bạn không sử dụng phiên bản thích hợp của ASP.NET MVC và do đó bạn đang nhận được các lỗi biên dịch.

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

+0

http://blog.kurtschindler.net/disabling-bundling-and-minification-in-asp-net-4-5mvc-4/ Đây là url mới cho blog – user636525

3

Mã này là từ MVC 4 Beta (hoặc chính xác hơn System.Web.Optimization beta1) nhưng bạn có thể cố gắng để biên dịch nó với MVC 4 RC (hoặc beta2 chính xác hơn System.Web.Optimization) (nếu MVC 4 ở tất cả). Trong MVC 4 RC NoTransforminternal.

+1

Tôi không thể hiểu tại sao họ tạo NoTransform nội bộ. Nó sẽ thực sự hữu ích cho việc phát hiện tự động phát hiện/gỡ lỗi. –

7

Lớp NoTransform không còn cần phải được công khai vì bắt đầu từ RC, một lớp học Transform rỗng trên Bundle hoàn toàn có nghĩa là NoTransform.

Trước:

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

Bây giờ là:

new Bundle("~/yourbundle") 

Chúng tôi cảm thấy đó là sạch để không đòi hỏi một trường hợp giả. Chúng tôi giữ nó bên trong vì nó có một chút logic có thể gây ra một số rắc rối, vì Transform có trách nhiệm thiết lập contentType cho phản hồi. Logic mặc định sử dụng phần mở rộng của tệp đầu tiên trong gói của bạn (.js/.css).

Ngoài việc bổ sung các trình trợ giúp Hiển thị tập lệnh/kiểu, bạn sẽ không cần phải chuyển đổi động giữa các phép biến đổi khác nhau dựa trên debug = true | false. Những người giúp việc nên chăm sóc điều đó cho bạn.

+0

Tôi không thể gọi Bundle mới() chỉ với một tham số. Có một giải pháp mới cho việc này không? – Lucas

+1

Bạn có phiên bản mới nhất không? http://nuget.org/packages/Microsoft.AspNet.Web.Optimization –

+0

Tôi nghĩ rằng tôi đã có mới nhất, nhưng tôi đã sử dụng Microsoft.Web.Optimization. Cảm ơn bạn đã làm rõ – Lucas

7

không phải là một câu trả lời trực tiếp đến điều này, nhưng chỉ đến thời điểm nó ra cho bất cứ ai đi qua này trong furture ... nó có thể được thực hiện thông qua cấu hình là tốt, (xem https://stackoverflow.com/a/12605451/6486)

<system.web> 
    <compilation debug="true" /> 
    <!-- Lines removed for clarity. --> 
</system.web> 
+0

Điều này phù hợp với tôi. – gingerbreadboy

Các vấn đề liên quan