在VS @import中发布网站时,“theme.css”不起作用
我有一个网站依赖于jquery ui theme.css的一些CSS样式。在VS @import中发布网站时,“theme.css”不起作用
当我在本地运行我的项目时,这工作正常,但是当我发布和部署时,这些特定的样式不会被拾取。
当我检查对话框关闭按钮,例如,在本地,它显示了标准交叉的形象,但发布的网站上,它说:“关闭”,并没有从theme.css
造型我已经检查并且theme.css包含在正常位置的目录结构中。
当我查看最小化的css文件时,它启动@import“base.css”; @ import“theme.css”;它来自Content/themes/base/all.css,但显然它并没有阅读这些内容。
我需要做些什么才能在发布的网站上正确地包含这些内容?
感谢
编辑:明明我刚才提到的所有jQueryUI的css文件单独在我的包,但它会使用@include指令有用。
这是我的故事...
有几个问题。第一个也是最简单的是,我需要的图像是在文件系统中(并且在调试模式下运行时可以访问),但是在项目中不存在,因此未部署。这是如何做到这一点了很好的解释:How do I add an existing directory tree to a project in Visual Studio?
我的主要问题涉及到捆绑(我从不把在意)
的事情是捆绑在调试模式下不会发生(即当您在本地运行时)
捆绑确实发生在部署发行版本时。
因此,您的应用程序运行良好,直到您部署它。
如果你想强迫你调试版本进行捆绑,所以你可以前部署(我会从现在开始做这个)发现了这些问题,里面添加您的RegisterBundles
public static void RegisterBundles(BundleCollection bundles)
BundleTable.EnableOptimizations = true;
这条线相反,如果你是在试图修复它,只是想看看你闪亮的web应用程序运行,在部署之前,而不是加入这一行:
BundleTable.EnableOptimizations = false;
这将完全禁用捆绑,使ÿ我们部署的应用程序就像您的调试应用程请记住捆绑是为了表现,所以你可能会遇到性能问题。
反正...........
我读了很多关于捆绑,但我无法找到有关参数的含义具体到ScriptBundle
,特别是第一个参数。
过了一会儿,我摸索出这一点:
bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
"~/Scripts/bootstrap.js",
"~/Scripts/respond.js"));
表示:
取文件
- 〜/脚本/ bootstrap.js
- 〜/脚本/响应.js
和捆绑起来(再压缩,并将其压扁成一个单一的GET),然后把他们在实际的Web文件夹~/bundles/bootstrap
因此,不仅是〜/包/引导一个关键您用来识别包(在电话捆绑,并在您的视图),它也是在包存储和
不知道这是什么东西是为调用的Web服务器上的物理路径,我有这样一个电话:
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/site.css",
"~/Content/themes/base/all.css",
"~/Content/select2.css"
));
问题出在:〜/ Content/css是一个实际的物理文件夹,它已经存在,所以绑定有些困惑。将第一个参数更改为不同的路径可以修复它。
所以...如果你有这个问题做两件事情:
确保您所有StyleBundle键(在StyleBundle调用的第一个字符串)与
~/bundles
开始(或合适的东西是唯一的),刚以确保他们不可能参考一个真实的文件夹我也确保没有任何引用的文件是.min文件。不知道这是否有所作为,但我发现它在另一个stackexchange答案,所以我反正做了。
我现在的问题是,我只需要在捆绑包中以正确的顺序包含正确的样式表。
如果捆绑一切还是错过了一个CSS文件,甚至将它们放在错误的顺序,你捆绑的CSS将不会被应用与您的调试CSS和你的页面将是一个畸形的畸形怪物
例如,我需要将我的site.css 后 bootstrap.css,以便我的自定义网站样式将覆盖通用引导样式。我也需要使用.IncludeFolder包括jqueryui css文件夹的所有内容
..仍然存在jqueryui样式引用子文件夹中的图像的问题。 (所以它仍然有不正确的相对路径问题)
我在我继承的项目中有jQueryUI库的问题。
它是造成这一行:
这all.css
文件只包含在此...
@import "base.css";
@import "theme.css";
...那些@import
命令似乎是问题。捆绑销售不能正常工作。
而这两个文件之一,base.css
,是也只是一个@import
命令的列表。
我的解决方案是与所有被试图包括那些@import
语句的.css文件的列表,以取代bundles.Add()
行:
bundles.Add(new StyleBundle("~/Content/jqueryui").Include(
"~/Content/themes/base/core.css",
"~/Content/themes/base/accordion.css",
"~/Content/themes/base/autocomplete.css",
"~/Content/themes/base/button.css",
"~/Content/themes/base/datepicker.css",
"~/Content/themes/base/dialog.css",
"~/Content/themes/base/draggable.css",
"~/Content/themes/base/menu.css",
"~/Content/themes/base/progressbar.css",
"~/Content/themes/base/resizable.css",
"~/Content/themes/base/selectable.css",
"~/Content/themes/base/selectmenu.css",
"~/Content/themes/base/sortable.css",
"~/Content/themes/base/slider.css",
"~/Content/themes/base/spinner.css",
"~/Content/themes/base/tabs.css",
"~/Content/themes/base/tooltip.css",
"~/Content/themes/base/theme.css"));
不言而喻,你应该总是刷新“捆绑“Chrome浏览器中的网页,并打开”开发者选项“面板,然后检查网络或控制台标签以查找与缺少捆绑文件相关的任何404错误。
我有完全相同的问题。如果我找到答案,我会发布它。看起来很疯狂,他们无法得到这个相对正确的链接。 – 2017-02-15 09:50:08