发布网站并没有更新我的 CSS 包

Publishing a website is not updating my CSS bundles

当我在发布模式下 运行 来自 Visual Studio 的代码并检查捆绑样式 sheet 时,我可以看到我对 css 文件的更新捆。但是,当我将网站发布到服务器或我的本地计算机时,我对样式 sheet 的更改没有生效。捆绑样式sheet还是老样子

我已经尝试重置 IIS,清理 build/rebuild,删除 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 时,我的更改不再存在.

如果您在与未缩小文件相同的目录中有一个缩小版本的 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 文件。

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

根据 Filip Stanek 在发布期间提到的 "the optimizer will first attempt to use the "bootstrap.min.css" 文件"

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

我最近遇到了类似的捆绑问题。我在 visual studio.

的 webapi 项目中使用 angularJS

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

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

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

那也没用。

最后,我最终将捆绑包中的 referenced/missing 文件(<controllerName>.js)移动到堆栈中的另一个位置。当我调试时,我从包中取消注释文件,因为我将它直接包含在 index.html 中。有可能是我恢复的时候VS没有编译更改。

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

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

而且我还清除了浏览器中的缓存,不仅通过我在 Chrome 中使用的 "Clear Cache" 按钮,还通过调试器|网络面板。通过上面的一些步骤应该有所帮助。