2012-06-09 13 views
5

He estado usando Bundles en MVC para empaquetar todos los scripts y CSS, lo cual es genial, pero .... ¿Hay alguna forma de incluir script o css de recursos en un recurso compartido? biblioteca de proyectos en un paquete, o alguien sabe de algo similar a los paquetes que pueden hacer esto?Bundle Script y CSS de Resources in Assemblies for MVC

+2

Hola, allí. ¿Conseguiste una solución para esto? – Captain0

Respuesta

1

probablemente sería comenzar a escribir un paquete de transformación personalizada clase que lea los recursos que necesita y devolver su contenido y tipo de contenido:

public class ResourceTransform : IBundleTransform 
{ 
    public void Process(BundleContext context, BundleResponse response) 
    { 
     string result; 

     using (Stream stream = Assembly.GetExecutingAssembly() 
      .GetManifestResourceStream("YourAssemblyNamespace.YourResourceFolder.YourFile.css")) 
     { 
      using (StreamReader reader = new StreamReader(stream)) 
      { 
       result = reader.ReadToEnd(); 
      } 
     } 

     response.ContentType = "text/css"; 
     response.Content = result; 
    } 
} 

Para uso en producción es probable que desee hacer la clase ResourceTransform un poco menos codificado y enviar los recursos que desea como parámetros o propiedades, pero se entiende la idea.

De esa manera usted puede agregar este paquete a su colección:

Bundle resources = new Bundle("~/css/resources"); 
    resources.Transforms.Add(new ResourceTransform()); 
    resources.Transforms.Add(new CssMinify()); 

bundles.Add(resources);