发布网站不会更新我的CSS包

时间:2015-02-12 05:56:55

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

当我在发布模式下从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时,我的更改不再存在。

3 个答案:

答案 0 :(得分:40)

如果您的css文件的缩小版本与未分隔文件位于同一目录中,则会发生这种情况。

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


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

在您的目录中

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

在调试版本中不会发生这种情况,因为如果使用以下内容将编译设置为debug,则不会提取缩小的文件:

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

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


    BundleTable.EnableOptimizations = false;

这将包含在BundleConfig.cs文件中。

答案 1 :(得分:1)

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

根据Filip Stanek的提及&#34;优化器将首先尝试使用&#34; bootstrap.min.css&#34;发布期间的文件&#34;

即使我们在发布代码时没有在bundle config中添加它,也指向&#34; bootstrap.min.css&#34;

答案 2 :(得分:0)

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

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

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

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

这也不起作用。

最后,我最终将捆绑中引用/缺失的文件(<controllerName>.js)移动到堆栈中的另一个位置。当我调试时,我从bundle中取消注释该文件,因为我将它直接包含在index.html中。当我恢复它时VS没有编译变化的可能性。

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

我的主张是编译器没有接收到更改,无论清理和重建仍然没有。移动文件后重新发布它似乎有效。

但我也在浏览器中清除了缓存,而不仅仅是来自&#34; Clear Cache&#34;我在Chrome中使用的按钮,也来自调试器|网络面板。一些步骤通过上述应该有所帮助。