Публикация веб-сайта не обновляет мои пакеты CSS

Когда я запускаю свой код из 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"
));

Я проверяю связанный css, посещая http://www.mywebsite.com/bundles/requiredStyles

Таким образом, я внес изменения в application.css, что прекрасно, если я нажму игру в visual studio (в режиме выпуска), но когда я публикую в своем локальном IIS, изменений больше нет.

Ответ 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.

Ответ 2

В моем случае bootstrap.min.css также существует в папке содержимого, которую я удалил, и веб-сайт работает нормально.

как сказал Филип Станек, "оптимизатор сначала попытается использовать файл" bootstrap.min.css "во время публикации",

даже если мы не добавили его в конфигурацию bundle при публикации кода, он указывает на "bootstrap.min.css",

Ответ 3

Недавно я столкнулся с подобной проблемой при наборе. Я использую angularJS в проекте webapi в визуальной студии.

У моего web.config было отладочное значение true. Я установил значение false. Без изменений.

Затем я попытался установить условия моего компилятора в true (в методе global.asax.cs | app... start):

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

Это тоже не сработало.

Наконец, я переместил ссылочный/отсутствующий файл (a <controllerName>.js) в связке в другое место в стеке. Когда я отлаживаю, я раскомментирую файл из пакета, потому что я включаю его непосредственно в index.html. Возможно, VS не скомпилировал изменение, когда я его восстановил.

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

Мое предложение состоит в том, что компилятор не подбирал изменения, и независимо от очистки и перестройки все еще не было. После перемещения файла и повторной публикации он, похоже, работал.

Но я также очистил кеш в своем браузере, а не только от кнопки "Очистить кеш", которую я использую в Chrome, но также и от панели "Отладчик | Сеть". Некоторые шаги по вышеописанному должны помочь.