【问题标题】:.NET Minification and adding new bundles at runtime.NET 缩小并在运行时添加新包
【发布时间】:2015-09-23 05:08:09
【问题描述】:

我已经阅读了其他一些帖子并尝试了一些不同的方法,但都没有奏效。我想在不重新启动网站的情况下重建 .NET Minification BundleTable,这样我就可以在新的包名称处添加带有新 CSS 文件的新文件夹。

我通过控制器方法尝试了以下操作:

BundleTable.Bundles.Clear();
BundleTable.Bundles.ResetAll();
//this is where the magic happens
//var context = new BundleContext(new HttpContextWrapper(System.Web.HttpContext.Current), BundleTable.Bundles, );
BundleConfig.RegisterBundles(BundleTable.Bundles);

BundleConfig.RegisterBundles 包含所有“bundles.Add(new StyleBundle("~/css/_layoutCSS").Include("~/css/_layout.css"));”等我需要的东西。

但是,如果我添加新的捆绑包,尝试在网站中按名称引用它们会出现 404 Not Found javascript 控制台错误,即找不到捆绑包。如果我重新启动网站,它会再次运行。

如何强制 .NET 刷新压缩包列表?有人说,也许你需要以某种方式替换上下文,但我无法做到(评论中未使用的部分)。

【问题讨论】:

  • 你应该能够为一个文件夹创建一个包含* 的包,然后将你的新脚本放到那个文件夹中(而不是创建一个新的包)以便它们可以被拾取。这会工作,只是不知道这是否是你要找的。如果您修改 .cs,您将不得不重新编译该站点。
  • 我也有同样的问题。你找到解决方案了吗?

标签: c# .net asp.net-mvc asp.net-mvc-4 bundling-and-minification


【解决方案1】:

您是否尝试在不清除或重置且不调用 RegisterBundles 的情况下仅添加到 BundleTable?像这样:

public ActionResult About()
    {
        BundleTable.Bundles.Add(new StyleBundle("~/testcss/StyleSheet1").Include(
                  "~/testcss/StyleSheet1.css"));

        return View();
    }

【讨论】:

  • 是的,我很确定我这样做了。从我发现的所有内容来看,要么必须替换/销毁捆绑上下文,要么根本不可能,所以想知道是否有人有解决方案
  • 有时间我会再试一次,但我的完整案例是我在 Bundles.Add 之前创建子目录和文件,并且子目录将位于 ~/Views/Parent/NewFolder Views 和 Parent 已经存在。此外,我试图清除整个捆绑表并重新生成它,而不仅仅是添加一个新项目。基本上是使用保存按钮创建这些文件的典型 UI。我可以添加一些代码来检查它是否已经在捆绑列表中,这样我就可以依赖 Bundle.Add 就像你的例子一样
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 2015-05-16
  • 2010-11-13
相关资源
最近更新 更多