2012-03-08 15 views
11

Soy nuevo en MVC, así que pensé que comenzaría un nuevo proyecto y probaría algunas de las nuevas funciones en MVC4. Tengo dos archivos css en mi directorio Content, normalise_mini y site.css. Cuando utilizo el siguiente código:ResolveBundleUrl no resuelve todos los archivos?

<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" /> 

Sólo toma mi site.css archivo no mi archivo de normalización. Tengo el siguiente en mi inicio de aplicaciones:

protected void Application_Start() 
{ 

    // Remove all other view engines except razor: 
    ViewEngines.Engines.Clear(); 
    ViewEngines.Engines.Add(new RazorViewEngine()); 

    AreaRegistration.RegisterAllAreas(); 

    RegisterGlobalFilters(GlobalFilters.Filters); 
    RegisterRoutes(RouteTable.Routes); 

    BundleTable.Bundles.RegisterTemplateBundles(); 
    BundleTable.Bundles.EnableDefaultBundles(); 
} 

¿Es necesario crear un paquete para cada archivo CSS (como this persona está haciendo)? O debería simplemente encontrar todos los archivos css automáticamente (lo cual esperaría que fuera el comportamiento predeterminado). Puede ser que sea digno de mención que empecé este proyecto como un sitio web vacío basado en el motor vista de la maquinilla de afeitar (que en realidad no estaba vacía del todo: /)

Gracias de antemano


actualización

De acuerdo con el enlace publicado, necesito comentar la línea que registra los paquetes de plantillas. Por ejemplo:

protected void Application_Start() 
{ 

    // Remove all other view engines except razor: 
    ViewEngines.Engines.Clear(); 
    ViewEngines.Engines.Add(new RazorViewEngine()); 

    AreaRegistration.RegisterAllAreas(); 

    RegisterGlobalFilters(GlobalFilters.Filters); 
    RegisterRoutes(RouteTable.Routes); 

    //BundleTable.Bundles.RegisterTemplateBundles(); // This is not needed 
    BundleTable.Bundles.EnableDefaultBundles(); 
} 

Esto ahora funciona. Mi pensamiento es que las dos líneas deberían coexistir sin ningún problema. Supongo que es por diseño, pero ¿es un mal diseño?

Respuesta

10

alguien ya ha respondido a esta pregunta:

http://forums.asp.net/t/1776599.aspx/1?MVC+4+0+Bundling+Minification+not+working+

ACTUALIZACIÓN:

Alguien ha expresado su preocupación de que un enlace puede no ser suficiente para responder a la pregunta. Aunque sigo creyendo que alguien que visita esta página debe leer el hilo enlazado, la respuesta breve es eliminar la línea BundleTable.Bundles.RegisterTemplateBundles() de Application_Start() y reemplazarla por BundleTable.Bundles.EnableDefaultBundles()

+0

Gracias la solución funciona. Sin duda, las dos opciones deberían funcionar juntas? –

+0

Lamentablemente, no sé lo suficiente acerca de MVC 4 para responder a esa pregunta específica de la parte superior de mi cabeza. Supongo que debería ser, pero podría ser un error dentro de MVC 4. – evasilchenko

+0

¡Qué diablos :) Funciona como un encanto ahora! thx –

0

Nota: Se eliminó EnableDefaultBundles a partir de la versión 1.0.0 RTM de Optmization, aún puede obtener la funcionalidad equivalente mediante la configuración de sus propios DynamicFolderBundles. Pero, en general, es probable que esto genere problemas (por lo general, hay dependencias en los archivos que no se capturan cuando se incluyen a granel * .js), por lo que pasamos a la configuración de paquete explícita y lejos de EnableDefaultBundles.

Para el mejor hasta la fecha docs/tutoriales: Codeplex Documentation

+0

Creo que debería actualizar la documentación en algún momento. La mayoría de los artículos escritos por personas de MS están desactualizados. – LeftyX

Cuestiones relacionadas