【问题标题】:Publishing a website is not updating my CSS bundles发布网站不会更新我的 CSS 包
【发布时间】:2015-02-12 05:56:54
【问题描述】:

当我在发布模式下从 Visual Studio 运行我的代码并检查捆绑的样式表时,我可以看到我对该捆绑包中的 css 文件的更新。但是,当我将网站发布到服务器或本地计算机时,我对样式表的更改并没有通过。捆绑的样式表仍然是旧样式表。

我尝试了 IIS 重置、干净的构建/重建、从 IIS 文件夹中删除所有文件并重新发布。

如果这有什么不同,我会使用 LESS。

我的捆绑配置:

bundles.Add(new StyleBundle("~/bundles/requiredStyles").Include(
    "~/Content/Style/Libs/bootstrap.min.css",
    "~/Content/Style/Libs/font-awesome.min.css",
    "~/Content/Style/Globals/application.css",
    "/Content/Style/Libs/muliDropdown.css",
    "~/Content/Style/Libs/smoothDivScroll.min.css",
    "~/Content/Style/Libs/jasny-bootstrap.min.css"
));

我正在通过访问 http://www.mywebsite.com/bundles/requiredStyles 来检查捆绑的 css

所以我对 application.css 进行了更改,如果我在 Visual Studio 中(在发布模式下)点击播放,这很好,但是当我发布到本地 IIS 时,我的更改不再存在。

【问题讨论】:

  • 如果您已经尝试从 IIS 文件夹中删除所有文件并重新发布站点,那么我唯一能想到的就是浏览器正在缓存文件的旧版本,但我假设你已经检查过了,对吧?
  • 尝试了所有这些以及更多。现在我已经通过 BundleTable.EnableOptimizations = false 关闭了“智能”,所以现在这个包只是分别吐出每个 css 文件路径,而不是把它们都放在一个中并缩小。

标签: c# css .net visual-studio-2013 publishing


【解决方案1】:

如果您在与未缩小文件相同的目录中有一个缩小版本的 css 文件,则可能会发生这种情况。

例如,如果您有以下文件:

~/Content/bootstrap.css ~/Content/bootstrap.min.css

在您的目录中,并且您在包中注册“bootstrap.css”文件,优化器将首先尝试在发布期间使用“bootstrap.min.css”文件。如果您只更新了“bootstrap.css”文件而没有更新“bootstrap.min.css”文件,您将获得“bootstrap.min.css”中的旧样式。您可以通过删除“bootstrap.min.css”文件或更新它来解决此问题。

这在调试版本中不会发生,因为如果您的编译设置为使用以下调试,则它不会提取缩小的文件:

<system.web>
    <compilation debug="true" />
    <!-- Lines removed for clarity. -->
</system.web>

您还可以通过以下方式禁用优化来覆盖 web.config 设置:

BundleTable.EnableOptimizations = false;

这将进入您的 BundleConfig.cs 文件中。

【讨论】:

  • 禁用优化对我来说很好。谢谢!
  • 在BundleConfig.cs中的捆绑注册之前禁用优化对我也有用
  • 为什么我首先要让EnableOptimizations 为真?
【解决方案2】:

在我的情况下,bootstrap.min.css 也存在于我删除的内容文件夹中,并且网站工作正常。

根据 Filip Stanek 提到的“优化器将首先尝试在发布期间使用“bootstrap.min.css”文件”

即使我们在发布代码时没有将它添加到捆绑配置中,它也会指向“bootstrap.min.css”

【讨论】:

    【解决方案3】:

    我最近遇到了类似的捆绑问题。我在 Visual Studio 的 webapi 项目中使用 angularJS。

    我的 web.config 已将调试设置为 true。我把它设置为假。没有变化。

    然后我尝试将编译器条件设置为 true(在 global.asax.cs|app...start 方法中):

    '#if DEBUG'
            'BundleTable.EnableOptimizations = true;'
    '#else'
            'BundleTable.EnableOptimizations = true;'   
    '#endif'
    

    那也没用。

    最后,我最终将包中的引用/缺失文件(&lt;controllerName&gt;.js)移动到堆栈中的另一个位置。当我调试时,我从包中取消注释文件,因为我将它直接包含在 index.html 中。可能是VS在我恢复的时候没有编译修改。

    ' bundles.Add(new ScriptBundle("~/SomeBundleName.js")
               .Include("~/Scripts/IWASMissingIntheBundle.js")
               .Include("~/Scripts/IWASNEVERMISSINGANDstillhere.js")
               .Include("~/Scripts/MOVEDIWASMissingHEREANDNOWImFound.js")'
    

    我的建议是编译器没有接受更改,并且无论清理和重建仍然没有。移动文件并重新发布后,它似乎工作了。

    但我也清除了浏览器中的缓存,不仅通过我在 Chrome 中使用的“清除缓存”按钮,还通过调试器|网络面板。一些逐步完成上述内容应该会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多