2012-06-12 7 views
6

Ich befolge ein Beispiel und kann die "NoTransform" nicht zum Erstellen eines benutzerdefinierten Bundles für ein MVC-Projekt verwenden. Hier ist mein Code, der wegen der "NoTransform" nicht kompiliert wird, was zu einem Fehler führt, der besagt: "Fehler 1 Der Typ oder Namespace-Name 'NoTransform' konnte nicht gefunden werden (fehlt eine using-Direktive oder eine Assembly-Referenz?)" . Irgendwelche Gedanken?NoTransform funktioniert nicht, wenn Sie versuchen, neues Bundle zu erstellen

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

welche Version asp.net mvc ru verwenden? – VJAI

Antwort

1

Die NoTransform und andere Methoden wie Scripts, Styles .. sind die neuen Features der Bündelung und minification, die in der MVC 4 Beta und MVC 4 RC-Versionen verfügbar ist. Ich hoffe, dass Sie nicht die richtige Version von ASP.NET MVC verwenden und daher die Kompilierungsfehler erhalten.

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/ Dies ist die neue URL für den Blog – user636525

3

Dieser Code ist von MVC 4 Beta (oder genauer gesagt System.Web.Optimization Beta1), aber Sie werden wahrscheinlich versuchen, es zu kompilieren mit MVC 4 RC (oder genauer gesagt System.Web.Optimization Beta2) (wenn MVC 4 überhaupt). In MVC 4 RC NoTransform ist internal.

+1

Ich kann nicht herausfinden, warum sie NoTransform gemacht haben intern. Es wäre wirklich nützlich für die automatische Release/Debug-Erkennung. –

7

Die NoTransform Klasse muss nicht mehr öffentlich sein, weil in RC, bedeutet eine Null Transform Klasse auf Bundle implizit NoTransform starten.

Vorher:

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

Jetzt:

new Bundle("~/yourbundle") 

Wir hielten es sauberer war nicht eine Dummy-Instanz erforderlich. Wir haben es intern gehalten, weil es ein kleines bisschen Logik enthält, das möglicherweise einige Probleme verursachen würde, da die Transformation für das Festlegen des contentType für die Antwort zuständig ist. Die Standardlogik verwendet die Dateierweiterung der ersten Datei in Ihrem Bundle (.js/.css).

Auch mit dem Hinzufügen der Script/Styles Render Helper sollten Sie nicht länger dynamisch zwischen verschiedenen Transformationen basierend auf debug = true | false wechseln müssen. Die Helfer sollten sich darum kümmern.

+0

Ich kann nicht scheinen, neue Bundle() mit nur einem Parameter aufzurufen. Gibt es dafür eine neue Lösung? – Lucas

+1

Haben Sie die neueste Version? http://nuget.org/packages/Microsoft.AspNet.Web.Optimization –

+0

Ich dachte, ich hätte die neueste, aber ich war Microsoft.Web.Optimization. Danke für die Klarstellung – Lucas

7

keine direkte Antwort auf diese Frage, aber es nur jemand darauf zu hinweisen, das über die im furture kommt ... es kann auch via Config erfolgen (siehe https://stackoverflow.com/a/12605451/6486)

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

Das funktioniert für mich. – gingerbreadboy

Verwandte Themen