2012-06-12 3 views
6

Я следую примеру и не могу заставить «NoTransform» работать при создании настраиваемого пакета для проекта MVC. Вот мой код, который не будет компилироваться из-за «NoTransform» с ошибкой, которая говорит: «Ошибка 1 Не удалось найти тип или имя пространства имен« NoTransform »(вам не хватает директивы using или ссылки на сборку?)» , Есть предположения?NoTransform не работает при попытке создать новый Bundle

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

, какую версию asp.net mvc ru используя? – VJAI

ответ

1

В NoTransform и другие методы, такие как Scripts, Styles .. есть новые особенности комплектации и Минимизация, который доступен в бета-версии MVC 4 и MVC 4 версии RC. Надеюсь, вы не используете правильную версию ASP.NET MVC и, следовательно, получаете ошибки компиляции.

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/ Это новый адрес для блога – user636525

3

Этот код из MVC 4 Beta (точнее System.Web.Optimization beta1), но вы, вероятно, пытается скомпилировать его с MVC 4 RC (точнее System.Web.Optimization бета2) (если вообще MVC 4). В MVC 4 RC NoTransform находится internal. не

+1

Я не могу понять, почему они сделали NoTransform внутренний. Это было бы очень полезно для автоматического обнаружения выпуска/отладки. –

7

NoTransform класса больше не нужно быть открытым, потому что, начиная с RC, нулевой Transform класса по Bundle неявно означает NoTransform.

До:

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

Сейчас:

new Bundle("~/yourbundle") 

Мы чувствовали, что чище не требуется фиктивный экземпляр. Мы сохранили это внутреннее, потому что у него есть небольшая логика, которая потенциально может вызвать некоторые проблемы, поскольку Transform отвечает за настройку contentType для ответа. Логика по умолчанию использует расширение файла первого файла в вашем пакете (.js/.css).

Также с добавлением помощников Script/Styles Render вам больше не нужно динамически переключаться между различными преобразованиями на основе debug = true | false. Помощники должны позаботиться об этом для вас.

+0

Я не могу назвать новый Bundle() только с одним параметром. Есть ли новое решение для этого? – Lucas

+1

У вас есть последняя версия? http://nuget.org/packages/Microsoft.AspNet.Web.Optimization –

+0

Я думал, что у меня есть последнее, но я использовал Microsoft.Web.Optimization. Спасибо за разъяснение – Lucas

7

не прямой ответ на это, но только, чтобы указать на это для тех, кто приходит через это в furture ... это может быть сделано с помощью конфигурации, а также, (см https://stackoverflow.com/a/12605451/6486)

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

Это работает для меня. – gingerbreadboy

Смежные вопросы