我正在使用一些基于配置的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;