gpt4 book ai didi

c# - Web.Optimizations - 有什么方法可以从 Style/Script Bundle 中获取所有内容?

转载 作者:可可西里 更新时间:2023-11-01 09:02:08 24 4
gpt4 key购买 nike

我正在使用一些基于配置添加 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 的预期安全性。属性,但它确实有效。

关于c# - Web.Optimizations - 有什么方法可以从 Style/Script Bundle 中获取所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14888283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com