5

我一直在 MVC 中使用 Bundles 将所有脚本和 CSS 打包在一起,这很棒但是.... 有没有办法将脚本或 CSS 从资源中包含在 Bundle 中的共享项目库中,或者有没有人知道类似的东西可以做到这一点的捆绑包?

4

1 回答 1

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);
于 2013-01-28T22:21:32.333 回答