2012-06-12 1 views
6

Sto seguendo un esempio e non riesco a far funzionare il "NoTransform" quando si crea un pacchetto personalizzato per un progetto MVC. Ecco il mio codice che non verrà compilato a causa del "NoTransform" che genera un errore che dice "Errore 1 Impossibile trovare il tipo o il nome dello spazio dei nomi 'NoTransform' (manca una direttiva using o un riferimento assembly?)" . qualche idea?NoTransform non funziona quando si tenta di creare un nuovo pacchetto

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

quale versione di asp.net mvc ru usando? – VJAI

risposta

1

Le NoTransform e altri metodi come Scripts, Styles .. sono le nuove caratteristiche di legatura e minification che è disponibile nella MVC 4 beta e MVC 4 versioni RC. Spero che tu non stia usando la versione corretta di ASP.NET MVC e quindi stai ricevendo gli errori di compilazione.

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/ Questo è il nuovo URL per il blog – user636525

3

Questo codice è da MVC 4 Beta (o più precisamente beta1 System.Web.Optimization), ma si sta probabilmente cercando di compilarlo con MVC 4 RC (o più precisamente beta2 System.Web.Optimization) (se MVC 4 del tutto). In MVC 4 RC NoTransform è internal.

+1

Non riesco a capire perché hanno fatto NoTransform interno. Sarebbe davvero utile per il rilevamento automatico Rilascio/Debug. –

7

La classe NoTransform non ha più bisogno di essere pubblico perché a partire dal RC, un null Transform classe su Bundle significa implicitamente NoTransform.

Prima:

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

Ora:

new Bundle("~/yourbundle") 

abbiamo pensato che fosse più pulita per non richiedere un'istanza fittizia. Lo abbiamo mantenuto interno perché ha un minimo di logica che potenzialmente potrebbe causare qualche problema, dal momento che la trasformazione è responsabile dell'impostazione del contentType per la risposta. La logica predefinita utilizza l'estensione del file del primo file nel pacchetto (.js/.css).

Inoltre, con l'aggiunta degli helper Script/Stili Render, non è più necessario passare in modo dinamico tra diverse trasformazioni basate su debug = true | false. Gli aiutanti dovrebbero occuparsene per te.

+0

Non riesco a chiamare il nuovo pacchetto() con un solo parametro. C'è una nuova soluzione per questo? – Lucas

+1

Hai l'ultima versione? http://nuget.org/packages/Microsoft.AspNet.Web.Optimization –

+0

Pensavo di avere l'ultima, ma stavo usando Microsoft.Web.Optimization. Grazie per il chiarimento – Lucas

7

non una risposta diretta a questo, ma solo per farlo notare a chi si imbatte questo nel furture ... può essere fatto tramite config pure, (vedi https://stackoverflow.com/a/12605451/6486)

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

Questo funziona per me. – gingerbreadboy