Tag: bundling and minification

Asp.Net捆绑不使用.min文件

根据发布模式下的文档,bundler应该使用.min.js文件(如果存在)。 我通过以下方式添加角度: bundles.Add(new ScriptBundle(Bundles.Scripts).Include( “~/Content/Scripts/angular.js”)); 我在同一个文件夹中有angular.js和angular.min.js。 所以根据我的理解,bundler应该只使用angular.min.js并且不做任何事情。 但是,当我在http响应中检查结果时,它会有所不同。 它也缩小了,但所有的名字都不同: 我在浏览器中得到了什么: (function(n,t,i){“use strict”;function v(n) Angular.min.js (function(P,X,u){‘use strict’;function M(b) 有人可以解释为什么会这样吗? 捆绑器是否只是忽略.min文件或者再次缩小.min.js? PS我试图删除angular.js文件,然后我得到一个空结果,所以看起来捆绑器根本不关心angular.min.js存在。

ASP.NET在Bundling中使用嵌入式资源

我正在尝试实现一种通用方法,为我的Web解决方案中的不同程序集提供使用嵌入式资源中嵌入的JavaScript和CSS文件的可能性。 此博客文章显示了使用VirtualPathProvider的技术。 这很好,但VirtualPathProvider需要包含在包含嵌入资源的每个程序集中。 我尝试从博客文章中增强VirtualPathProvider,以便可以将程序集传递给它并从程序集中加载资源: public EmbeddedVirtualPathProvider(VirtualPathProvider previous, Assembly assembly) { this.previous = previous; this.assembly = assembly; } 初始化时,它从传递的程序集中读取所有嵌入的资源: protected override void Initialize() { base.Initialize(); this.assemblyResourceNames = this.assembly.GetManifestResourceNames(); this.assemblyName = this.assembly.GetName().Name; } 并且GetFile从传递的程序GetFile读取内容: public override VirtualFile GetFile(string virtualPath) { if (IsEmbeddedPath(virtualPath)) { if (virtualPath.StartsWith(“~”, System.StringComparison.OrdinalIgnoreCase)) { virtualPath = virtualPath.Substring(1); } if (!virtualPath.StartsWith(“/”, System.StringComparison.OrdinalIgnoreCase)) { virtualPath = […]

打开发布模式时捆绑不在MVC5中工作

我在BundleConfig.cs中配置了以下捆绑包: bundles.Add(new StyleBundle(“~/bundles/css”).Include( “~/assets/bootstrap/css/bootstrap.css”, “~/assets/css/global/all.css”)); 我使用以下方法引用它: @Styles.Render(“~/bundles/css”) 当我处于调试模式(web.config compilation debug=”true” )时,它按预期工作,因为它将两个css文件呈现为正常,即: 但是,当我设置debug=”false” ,上述行为仍然会发生,因为它确实识别文件,但它只是正常渲染它们。 确认捆绑绝对可以工作我已经在BundleConfig中启用了优化,即BundleTable.EnableOptimizations = true; 每当我执行上述操作时,它会捆绑css并按预期显示,即: 编辑: 有些人提到将以下代码添加到我的BundleConfig.cs文件中将实现我的目标: #if DEBUG BundleTable.EnableOptimizations = false; #else BundleTable.EnableOptimizations = true; #endif 我理解并理解这个响应,但根据文档,MVC捆绑的默认行为是在发布模式下捆绑但不在调试模式下捆绑。 我不明白为什么我需要添加额外的代码才能在它应该这样做的时候执行此操作。 编辑2 我忏悔了。 事实certificate我打开了Views文件夹中的web.config而不是主web.config。 我更改了主web.config中的设置,这对我来说很好。 我责怪ReSharper

ASP.NET捆绑/缩小和嵌入式资源

我正在尝试使用此博客中描述的技术将嵌入式DLL资源添加到我的捆绑包中。 我在下面创建了自定义VirtualPathProvider 。 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 (IsEmbeddedPath(virtualPath)) { return null; } else { return Previous.GetCacheDependency(virtualPath, virtualPathDependencies, […]

将CDN URL添加到mvc 4 bundler输出

使用内置的MVC4捆绑器,如何将我的CDN URL添加到它生成的链接标记中? 我已经设置了Amazon Cloudfront,以便在首次请求时从我的网络服务器中提取资产。 所以当我定义一个这样的包时: bundles.Add(new StyleBundle(“~/Content/css”).Include( “~/Content/reset.css”, “~/Content/960_24_col.css”, “~/Content/Site.css” )); 部署后,我可以这样引用它: http://[cloundfrontid].cloudfront.net/Content/css?v=muhFMZ4thy_XV3dMI2kPt-8Rljm5PNW0tHeDkvenT0g1 现在我只需要将Bundler生成的链接更改为相对于指向我的CDN的绝对链接。 我认为可以使用IBundleTransform重写路径,但我找不到任何这样的例子。 注意:为了清楚起见,我知道您可以为捆绑包指定CDN链接,但只有在捆绑包可以被静态链接替换时才有效。

ASP.Net MVC 5子目录捆绑问题

我在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时,Chrome会向我显示404。 捆绑系统将以下内容添加到我的布局页面: file2.js的路径是错误的。 它省略了路径的subdir1部分。 我在这里错过了什么吗?

获取MVC Bundle Querystring

是否可以在ASP.NET MVC中检测bundle查询字符串? 例如,如果我有以下捆绑请求: /css/bundles/mybundle.css?v=4Z9jKRKGzlz-D5dJi5VZtpy4QJep62o6A-xNjSBmKwU1 是否可以提取v查询字符串?: 4Z9jKRKGzlz-D5dJi5VZtpy4QJep62o6A-xNjSBmKwU1 我试过在捆绑转换中做这个,但没有运气。 我发现即使将UseServerCache设置为false ,转换代码也不会始终运行。

无法加载文件或程序集“WebGrease”之一的依赖项。 定位的程序集的清单定义与程序集引用不匹配

这个问题有很多解决方案,请阅读下面的所有答案,它们也可以帮助您解决问题。 如果您找到解决此问题的新方法,请在答案中记录 我试图将System.Web.Optimization添加到我的ASP.NET Web窗体解决方案。 我通过NuGet包添加了Microsoft ASP.NET Web Optimization Framework。 它将Microsoft.Web.Infrastracture和WebGrease(1.5.2)添加到引用中。 但是,当我跑 我得到运行时错误 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.Config 但没有任何运气。 我注意到我的WebSite的Web配置包含这一行 如果我用它替换它 然后一切正常,我没有得到运行时错误。 不幸的是,我需要xmlns。 我项目的其他组件依赖于它。 为什么优化会在架构指向v2.0时尝试加载旧版本? 有没有办法强制它加载最新或唯一可用的WebGrease.dll? 如果不改变,我还能尝试什么 ? 感谢您提供任何帮助! 编辑:1)附加FusionLog结果。 […]

从多个CDN位置创建脚本包

假设我们的应用程序处于脱机状态,即我们无法使用第三方CDN,因此我们正在创建自己的应用程序。 我想在一个单独的(父)Web应用程序中托管所有供应商脚本,然后将它们包含在其他几个MVC应用程序的捆绑包中。 例如 http://localhost/parentWeb/Scripts/jquery.js http://localhost/parentWeb/Scripts/jquery-ui.js http://localhost/parentWeb/Scripts/globalize.js 我想在ASP.NET MVC App网站中包含: http://localhost/parentWeb/childWeb 即做这样的事情: bundles.UseCdn = true; bundles.Add( new ScriptBundle( “~/bundles/VendorScripts”, “http://localhost/parentWeb/Scripts/jquery.js”, “http://localhost/parentWeb/Scripts/jquery-ui.js”, “http://localhost/parentWeb/Scripts/globalize.js”)); ……当然这是不可能的。 有一个很好的解决方法吗?

MVC4捆绑缓存头

我想更改从捆绑请求发送的缓存标头。 目前它是由User-Agent改变但我不希望它,有没有办法更改捆绑请求发送的标头? 在快速查看System.Web.Optimization程序集后,我可以看到标题在Bundle.SetHeaders中设置,这是一个私有静态函数,所以我不认为它可能,尽管我希望被certificate是错误的。