天道酬勤,学无止境

bundling-and-minification

Automatically switching to minified CSS & JS files in different environments

I am using ASP.Net MVC 5 and also taking advantage of WebEssentials LESS and bundle features. WebEssentials is setup to create minified css and js files on save. This is a feature I want because I can monitor the output and it lowers the application startup time (not using Asp.Net MVC bundles). How can I automatically get my app to use the minified version of the files when it is deployed without having to manually change the file names? So, for example, from: <link href="somestyles.css" .. > to: <link href="somestyles-min.css" .. > I did read that I could combine WebEssentials and Asp.Net MVC

2021-11-29 01:03:13    分类:问答    asp.net-mvc   asp.net-mvc-5   bundling-and-minification   web-essentials

ASP.NET Bundling/Minification and Embedded Resources

I'm trying to use the technique described in this blog to add embedded dll resources to my bundles. I have created the custom VirtualPathProvider below. public class EmbeddedVirtualPathProvider : VirtualPathProvider { private Type _rootType; public EmbeddedVirtualPathProvider(Type rootType) { _rootType = rootType; } public override bool FileExists(string virtualPath) { if (IsEmbeddedPath(virtualPath)) return true; else return Previous.FileExists(virtualPath); } public override CacheDependency GetCacheDependency(string virtualPath, IEnumerable virtualPathDependencies, DateTime utcStart) { if

2021-11-28 06:45:45    分类:问答    c#   asp.net-mvc   bundling-and-minification   virtualpathprovider

ASP.Net MVC 5 子目录捆绑问题(ASP.Net MVC 5 sub-directory bundling issues)

问题 我在 ASP.Net MVC 5 项目中看到捆绑的奇怪行为。 当我明确声明 BundleConfig.cs 文件中的所有文件时,我的项目工作正常,如下所示: bundles.Add(new ScriptBundle("~/bundles/app").Include( "~/app/app.js", "~/app/config.js", "~/app/dir1/file1.js", "~/app/dir1/subdir1/file2.js", ..... 但是,如果我改用IncludeDirectory ,则开发期间的脚本路径 ( BundleTable.EnableOptimizations = false ) 不完整。 这是我看到的: bundles.Add(new ScriptBundle("~/bundles/app").Include( "~/app/app.js", "~/app/config.js") .IncludeDirectory("~/app/dir1", "*.js", true) Chrome 在尝试获取file2.js时向我显示 404。 捆绑系统将以下内容添加到我的布局页面: <script src="/app/app.js"></script> <script src="/app/config.js"></script> <script src=

2021-11-28 03:23:56    分类:技术分享    c#   asp.net-mvc   bundling-and-minification

如何保留在 MVC 4 样式捆绑中重要的注释?(How can I preserve comments that matter in MVC 4 style bundling?)

问题 我找到了这个链接: http://giddyrobot.com/preserving-important-comments-in-mvc-4-bundles/ 它展示了如何为 JavaScript 做同样的事情,我已经用它来尝试 StyleBundles,但我不确定它是否在后端正确地做事。 源代码是否可用? 如果没有,有人知道这是否正确吗? 我只想保留以/*!开头的注释/*! 这样像 normalize 这样的开源项目的许可证就可以正确地包含在生产中。 这是我到目前为止所拥有的: public static void RegisterBundles(BundleCollection bundles) { // Allows us to keep /*! comments for licensing purposes var cssBundleSettings = new CssSettings { CommentMode = CssComment.Important }; } public class ConfigurableStyleBundle : Bundle { public ConfigurableStyleBundle(string virtualPath, CssSettings cssSettings) : this(virtualPath

2021-11-28 02:47:27    分类:技术分享    asp.net   asp.net-mvc-4   bundling-and-minification

无法加载文件或程序集“WebGrease”的依赖项之一。 定位的程序集的清单定义与程序集引用不匹配(Could not load file or assembly 'WebGrease' one of its dependencies. The located assembly's manifest definition does not match the assembly reference)

问题 这个问题有很多解决方案,请阅读下面的所有答案,它们也可能帮助您解决问题。 如果您找到解决此问题的新方法,请记录在您的答案中 我正在尝试将 System.Web.Optimization 添加到我的 ASP.NET Web 窗体解决方案中。 我通过 NuGet 包添加了 Microsoft ASP.NET Web 优化框架。 它将 Microsoft.Web.Infrastracture 和 WebGrease (1.5.2) 添加到参考文献中。 然而,当我跑 <%= System.Web.Optimization.Scripts.Render("~/bundles/js")%> 我收到运行时错误 Could not load file or assembly 'WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 我曾尝试将 assemblyBinding 添加到 Web

2021-11-27 23:18:54    分类:技术分享    c#   asp.net   asp.net-mvc   bundling-and-minification   asp.net-optimization

How to minify CSS and JavaScript files in Visual Studio 2015

I am building a web application for mobile using visual studio, and I wanted to know how do I minify all my CSS files into one file, and also all my JavaScript to one minified file.

2021-11-27 13:15:21    分类:问答    web-applications   minify   bundling-and-minification

不包含大多数文件的 ASP.Net MVC 样式包(ASP.Net MVC Style Bundle Not Including Most Files)

问题 最近,我的一个项目的本地副本完全失去了大部分样式。 我花了一段时间才弄明白,因为大部分样式都是在一个文件中完成的,其余的都是像 Kendo 和 jQuery UI 这样的小东西。 其他次要的东西没有被添加到页面中。 我认为这些样式已经被另一位开发人员修改了(有一段时间没有接触过这个项目),他只测试了 Web API 的东西而不是 UI,所以他可能已经破坏了它并且永远不知道,但我找到了问题:捆绑包中仅包含site.css文件, site.css文件均未包含。 我什至尝试重新排列包中包含的 CSS 文件的顺序,它只会包含site.css 。 我重建了项目,清除了缓存等,所以它肯定会看到变化。 我记得最近更新了一些 NuGet 包或 VS 包之类的东西——甚至可能是 MVC 包? 我的问题是:是否有什么改变导致了这种情况发生? 这是什么原因造成的? 编辑:来自BundleConfig.cs代码: public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new StyleBundle("~/Content/css").Include( "~/Content/site.css", "~/Content/themes/kendo/kendo.common.min.css", "~/Content

2021-11-26 08:03:15    分类:技术分享    asp.net-mvc   bundling-and-minification

ASP 包中的绝对 URL(Absolute URL in ASP bundle)

问题 我为 Google Maps 使用了 jQuery 库,它取决于首先加载的 Google 脚本。 我希望能够将两者都包含在捆绑包中: bundles.Add(new ScriptBundle("myfoobundle").Include( "http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places", "~/scripts/jquery.fooplugin-{version}.js" )); 这似乎不起作用(引发异常抱怨第一个字符串)。 有人可能会说这不应该起作用,因为绝对 URL 并不意味着要缩小/捆绑。 但是目前的方法很麻烦,因为我需要确保依赖项是正确的,而且这发生在不同的地方(一半问题在捆绑代码中,另一半在视图中)。 有一个如上所述的 1 步解决方案会很好。 在这方面我有什么选择吗? 更新: 解决关于使用 CDN 作为解决方案的评论:如果我指定bundles.UseCdn = true它没有效果,我仍然得到异常The URL 'http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places' is not valid. Only application relative URLs (~/url) are allowed

2021-11-25 23:46:25    分类:技术分享    asp.net-mvc   asp.net-mvc-4   asp.net-optimization   bundling-and-minification

Dotless - 无法使用 MVC Bundling 在单独的文件中引用 less 变量(Dotless - Can't reference less variable in separate file with MVC Bundling)

问题 我希望我没有创建重复的主题,但我已经搜索了两天并且找不到解决方案。 我们正在MVC4中启动一个新项目,并且加载了较少版本的引导程序。 我遇到的问题是当我尝试引用bootstrap.less 、 global.less或当前文件之外的任何内容中的某些类或变量时。 我可以在当前文件的顶部创建一个变量并使用它就好了,但是如果我想使用单独文件中的某些内容,我必须@import它。 如果我的整个应用程序的 less 都在一个文件中,这会很好,但是我必须@import 4+ 个文件到我创建的每个页面/部分 less 文件中。 我从 https://gist.github.com/2002958 添加了 MVC4 捆绑添加 正如我所看到的,问题是每个文件都被独立评估并转换为 css。 我试图简化过程并从 less 包中的所有文件构建一个大量的 less 字符串,然后转换它们( Less.Parse(lessString) ),但我收到错误: “您正在导入一个无法找到的以 .less 结尾的文件” 所以这是我的最终问题:有没有办法简单地解析一个较少的字符串而不引用物理文件? 那将解决我的问题。 如果由于某些奇怪的原因而无法做到这一点,是否有一个我不知道的组件或流程已经到位,实际上在缩小文件之前将它们捆绑在一起? 当我绕着圈子试图让这个工作时,任何关于这个主题的光都将不胜感激。

2021-11-25 17:51:04    分类:技术分享    c#   less   bundling-and-minification   dotless

bundling is turned off but I still want versioning

I am using bundling in MVC4, or rather I was using bundling but have had to turn it off. This means the script and style links are just rendered on separate lines and have no version string to make sure browsers download the latest file if there is an update. I have tried adding a version string in the bundling code but I then get an error saying the path is invalid. Is there a way of applying versioning to bundled script files that have had bundling turned off?

2021-11-25 16:11:34    分类:问答    asp.net-mvc-4   bundling-and-minification