tim*_*ord 10 c# asp.net asp.net-mvc bundling-and-minification asp.net-optimization
我正在使用一些动态捆绑,它根据配置添加CSS和JS文件.
我启动了一个新的StyleBundle,这样:
var cssBundle = new StyleBundle("~/bundle/css");
Run Code Online (Sandbox Code Playgroud)
然后循环通过配置并添加任何找到的包括:
cssBundle.Include(config.Source);
Run Code Online (Sandbox Code Playgroud)
循环之后,我想检查是否包含任何文件/目录.我知道有EnumerateFiles(),但我不认为这100%是为了这个目的.
其他人以前做过类似的事吗?
Cor*_*rey 15
本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();
Run Code Online (Sandbox Code Playgroud)
如果你只需要一个计数,那么:
int count = resolver.GetBundleContents("~/bundle/css").Count();
Run Code Online (Sandbox Code Playgroud)
编辑:使用反射
显然我之前的反射测试做错了.
这实际上有效:
using System.Reflection;
using System.Web.Optimization;
...
int count = ((ItemRegistry)typeof(Bundle).GetProperty("Items", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(cssBundle, null)).Count;
Run Code Online (Sandbox Code Playgroud)
你当然应该在那里添加一些安全检查,就像许多反映例子一样,这违反了Items
财产的预期安全性,但确实有效.
归档时间: |
|
查看次数: |
6397 次 |
最近记录: |