从MVC程序集中的资源捆绑脚本和CSS

时间:2012-06-09 09:46:56

标签: asp.net-mvc resources bundle

我一直在使用MVC中的Bundles将所有脚本和CSS打包在一起,这很棒但是.... 有没有办法在Bundle中的共享项目库中包含资源中的脚本或css,或者有没有人知道类似于可以执行此操作的bundle的内容?

1 个答案:

答案 0 :(得分:1)

我可能会开始编写自定义包变换类来读取您需要的资源并返回其内容和内容类型:

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;
    }
}

对于生产用途,您可能希望使ResourceTransform类稍微不那么硬编码,并将您想要的资源作为参数或属性发送,但您明白了。

通过这种方式,您可以将此捆绑包添加到您的收藏集中:

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

bundles.Add(resources);