Публикация веб-сайта не обновляет мои пакеты 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, но также и от панели "Отладчик | Сеть". Некоторые шаги по вышеописанному должны помочь.