web-dev-qa-db-ja.com

Webサイトを公開しても、CSSバンドルが更新されません

Visual Studioからリリースモードでコードを実行し、バンドルされているスタイルシートを確認すると、そのバンドル内のcssファイルの更新を確認できます。ただし、Webサイトをサーバーまたはローカルマシンに公開しても、スタイルシートの変更が反映されていません。バンドルされているスタイルシートはまだ古いものです。

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を確認しています。

そのため、Visual Studio(リリースモード)で再生を押しても問題ないapplication.cssに変更を加えましたが、ローカルIISに公開すると、変更は反映されなくなりました。

11
garethb

これは、縮小されていないファイルと同じディレクトリに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ファイル内に入ります。

40
Filip Stanek

私の場合、bootstrap.min.cssは、削除したコンテンツフォルダーにも存在し、Webサイトは正常に機能しています。

フィリップ・スタネックが述べたように、「オプティマイザーは最初に公開中に「bootstrap.min.css」ファイルを使用しようとします」

コードの公開中にバンドル構成に追加しなかった場合でも、「bootstrap.min.css」を指します。

1
Dhruv Patel

最近、バンドリングで同様の問題が発生しました。 VisualStudioのwebapiプロジェクトでangularJSを使用しています。

私のweb.configのデバッグはtrueに設定されていました。 falseに設定しました。変化なし。

次に、コンパイラの条件をtrueに設定してみました(global.asax.cs | app ... startメソッドで)。

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

それもうまくいきませんでした。

最後に、参照された/欠落しているファイルを移動することになりました(<controllerName>.js)バンドル内のスタック内の別の場所へ。デバッグするとき、ファイルをindex.htmlに直接含めるため、バンドルからファイルのコメントを解除します。復元したときにVSが変更をコンパイルしなかった可能性があります。

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

私の提案は、コンパイラーは変更を取得せず、クリーニングと再構築に関係なく、まだ取得しなかったということです。ファイルを移動して再公開した後、それは機能しているように見えました。

しかし、Chromeで使用している[キャッシュのクリア]ボタンだけでなく、デバッガー|ネットワークパネルからも、ブラウザーのキャッシュをクリアしました。上記のいくつかのステップが役立つはずです。

0
user1076384