c# – Web.Optimizations – 从风格/脚本包中获取所有内容的任何
发布时间:2020-12-15 03:52:48 所属栏目:百科 来源:网络整理
导读:我正在使用一些基于配置的CSS和JS文件的动态捆绑. 我开了一个新的StyleBundle,这样: var cssBundle = new StyleBundle("~/bundle/css"); 然后循环通过配置并添加任何发现包括: cssBundle.Include(config.Source); 在循环之后,我想检查是否有实际包含任何文
我正在使用一些基于配置的CSS和JS文件的动态捆绑.
我开了一个新的StyleBundle,这样: var cssBundle = new StyleBundle("~/bundle/css"); 然后循环通过配置并添加任何发现包括: cssBundle.Include(config.Source); 在循环之后,我想检查是否有实际包含任何文件/目录.我知道有EnumerateFiles(),但我不认为这是100%的目的. 有人做过类似的事吗? 解决方法
Bundle类使用不暴露于应用程序的内部项目列表,并且不一定通过反射访问(我尝试并且无法获取任何内容).您可以使用BundleResolver类获取有关此类信息,如下所示:
var cssBundle = new StyleBundle("~/bundle/css"); cssBundle.Include(config.Source); // if your bundle is already in BundleTable.Bundles list,use that. Otherwise... var collection = new BundleCollection(); collection.Add(cssBundle) // get bundle contents var resolver = new BundleResolver(collection); List<string> cont = resolver.GetBundleContents("~/bundle/css").ToList(); 如果你只需要一个计数: int count = resolver.GetBundleContents("~/bundle/css").Count(); 编辑:使用反射 显然我以前的反思测试做错了. 这实际上是: using System.Reflection; using System.Web.Optimization; ... int count = ((ItemRegistry)typeof(Bundle).GetProperty("Items",BindingFlags.NonPublic | BindingFlags.Instance).GetValue(cssBundle,null)).Count; 您当然可以添加一些安全检查,并且像很多反思示例一样违反了Items属性的预期安全性,但它的工作正常. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |