是否支持使用ASP .NET 4.5 css和js捆绑功能的嵌入式资源?

时间:2012-02-20 02:52:17

标签: asp.net-4.5

我阅读了Scott Gu's article关于ASP .NET 4.5中对捆绑和缩小的内置支持。

然而,没有提到嵌入式资源,这是一个遗憾。

过去我一直在使用名为Client Dependency Framework的Codeplex项目,该项目支持嵌入式资源。

对我来说似乎是一个非常重要的遗漏。是否计划支持?

3 个答案:

答案 0 :(得分:3)

我很确定你可以编写自己的变压器来处理这个问题。

  1. 创建一个实现System.Web.Optimization.IBundleTransform。
  2. 的类
  3. 然后在Process方法中获取嵌入资源的内容。这不应该太困难。 This blog post可能会有帮助。
  4. 然后将变换添加到捆绑包中。
  5. e.g。

    var bundle = new Bundle("~/Test").Include("~/Content/Site.css");
    bundle.Transforms.Add(new EmbeddedResourceTransformer());
    

    请注意,我使用的是System.Web.Optimization中的nuget包,不是 Microsoft.Web.Optimization(我不知道为什么有两种不同的命名空间实现,以及语法是否会两者都一样)。

    与文件系统相反,我也无法保证以这种方式执行此操作。

    希望有所帮助!

答案 1 :(得分:2)

上面的答案只是一些评论,因为我没有足够的代表。直接评论......

Hainesy的回答建议使用BundleTransform。我认为在包含嵌入式资源的过程中为时已晚。 BundleTransform有助于在从原始文件中提取内容之后以及将它们放入捆绑文件之前转换css或javascript内的内容。例如,如果您需要修改CSS中的图像URL以指向dev的本地相对URL和生产的CDN URL。

来自user960567的链接解释了如何使用嵌入式资源,但有一个问题。该过程仅适用于其他项目中使用的常用控件 例如如果您创建一个需要CSS和JS的文本框,那么它允许您在公共项目中创建一个HTML帮助程序,该项目将添加文本框和将嵌入资源拉入页面的脚本标记。它不允许您将嵌入式资源从公共项目拉入另一个项目的包中。这基本上会为每个嵌入式资源创建一个单独的脚本或样式标记,这可能不是您想要的(至少它不是我想要的。)

答案 2 :(得分:-3)

我已经写了一篇详细的文章,介绍了如何使用捆绑和缩小技术来整理外部资源here