2012-06-12 18 views
6

Estoy siguiendo un ejemplo y no puedo hacer que funcione el "NoTransform" cuando creo un paquete personalizado para un proyecto MVC. Aquí está mi código que no compilará debido a la "NoTransform" produciendo un error que dice "Error 1 No se pudo encontrar el tipo o el nombre del espacio de nombres 'NoTransform' (¿falta una directiva using o una referencia de ensamblado?" . ¿Alguna idea?NoTransform no funciona cuando intento crear un nuevo paquete

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

la versión de asp.net mvc ru usando? – VJAI

Respuesta

1

Los NoTransform y otros métodos como Scripts, Styles .. son las nuevas características de la agrupación y minificación que está disponible en la beta MVC 4 y MVC 4 versiones de RC. Espero que no estés usando la versión adecuada de ASP.NET MVC y, por lo tanto, estás obteniendo los errores de compilación.

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/ Esta es la nueva url para el blog – user636525

3

Este código es de MVC Beta 4 (o más precisamente beta1 System.Web.Optimization) pero probablemente están tratando de compilarlo con MVC RC 4 (o más precisamente beta2 System.Web.Optimization) (si MVC 4 en absoluto). En MVC 4 RC NoTransform es internal.

+1

No puedo entender por qué hicieron NoTransform interno. Sería realmente útil para la detección automática de liberación/depuración. –

7

La clase NoTransform ya no tiene que ser pública, porque a partir de RC, un nulo Transform clase sobre Bundle significa implícitamente NoTransform.

Antes:

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

Ahora:

new Bundle("~/yourbundle") 

nos pareció que era más limpio que no requiere una instancia de maniquí. Lo mantuvimos interno porque tiene un poco de lógica que podría causar algunos problemas, ya que Transform es responsable de configurar contentType para la respuesta. La lógica predeterminada usa la extensión de archivo del primer archivo en su paquete (.js/.css).

También con la adición de los ayudantes de renderizado de scripts/estilos, ya no necesitará cambiar dinámicamente entre las diferentes transformaciones basadas en debug = true | false. Los ayudantes deberían encargarse de eso por ti.

+0

Parece que no puedo llamar a nuevo Bundle() con solo un param. ¿Hay una nueva solución para esto? – Lucas

+1

¿Tiene la última versión? http://nuget.org/packages/Microsoft.AspNet.Web.Optimization –

+0

Pensé que tenía lo último, pero estaba usando Microsoft.Web.Optimization. Gracias por la aclaración – Lucas

7

no es una respuesta directa a esta pero sólo para señalarlo a cualquier persona que se encuentra con esto en el Furture ... se puede hacer por medio de config, así, (ver https://stackoverflow.com/a/12605451/6486)

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

Esto funciona para mí. – gingerbreadboy

Cuestiones relacionadas