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

Pau*_*son 5 asp.net-mvc resources bundle

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

Mar*_*erl 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

对于生产用途,您可能希望ResourceTransform减少类的硬编码,并将所需的资源作为参数或属性发送,但您明白了。

这样您就可以将此捆绑包添加到您的收藏中:

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

bundles.Add(resources);
Run Code Online (Sandbox Code Playgroud)