C# 我可以在ASP.NET MVC中搜索文档并将找到的任何js文件添加到捆绑包中吗?

C# 我可以在ASP.NET MVC中搜索文档并将找到的任何js文件添加到捆绑包中吗?,c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,因此,我们正在制作一个带有插件的网站,我想知道我是否可以在plugins文件夹中搜索任何js文件并将它们添加到BundleConfig.cs类中的bundle中 我曾考虑过将所有我想绑定的文件命名为Plugin.pluginName.js,然后搜索所有文件,寻找与“Plugin..js*”匹配的文件,但我不确定具体怎么做 如何创建插件捆绑包?按照命名约定命名所有要捆绑的文件是一个很好的约定 将脚本捆绑包添加到捆绑包集合 public static void RegisterBundles(Bun

因此,我们正在制作一个带有插件的网站,我想知道我是否可以在plugins文件夹中搜索任何js文件并将它们添加到BundleConfig.cs类中的bundle中

我曾考虑过将所有我想绑定的文件命名为Plugin.pluginName.js,然后搜索所有文件,寻找与“Plugin..js*”匹配的文件,但我不确定具体怎么做


如何创建插件捆绑包?

按照命名约定命名所有要捆绑的文件是一个很好的约定

将脚本捆绑包添加到捆绑包集合

public static void RegisterBundles(BundleCollection bundles) {
    bundles.Add(new ScriptBundle("~/bundles/plugins").Include(
            "~/Scripts/*.Plugin.js")); //{pluginName}.Plugin.js convention

    //...other bundles
}
如果您想放弃命名约定,还可以在plugins文件夹中搜索任何js文件

public static void RegisterBundles(BundleCollection bundles) {
    bundles.Add(new ScriptBundle("~/bundles/plugins")
            .IncludeDirectory("~/Plugin‌​s", "*.Plugin.js", true));
    //above recursively search subdirectories of directoryVirtualPath.

    //...other bundles
}
在视图中,使用注册名称引用bundle,如下所示

@Scripts.Render("~/bundles/plugins")

参考

什么是捆绑?

捆绑是ASP.NET 4.5中的一项新功能,它可以轻松地将多个文件合并或捆绑到单个文件中。 您可以创建CSS、JavaScript和其他捆绑包。更少的文件意味着更少的HTTP请求,这可以提高第一页加载性能

如何启用捆绑?

通过在Web.config文件的compilation元素中设置debug属性的值来启用或禁用绑定。在下面的XML中,debug设置为true,因此绑定和缩小被禁用。 XML

重要注意事项:Include方法中指定的虚拟路径和IncludeDirectory方法中的搜索模式可以接受一个“*”通配符作为最后一个路径段中的前缀或后缀

官方文件:

谢谢


Karthik

因此,使用
“~/Plugins/*.Plugin.js”
似乎只能搜索
~/Plugins
文件夹的即时内容。我需要搜索每个立即子文件夹,如
“~/Plugins/*/*.Plugin.js”
,但您不能使用它,因为通配符只能位于最后一节(文件名所在的位置)。include方法使用参数。您可以使用system.io获取所有插件目录,并构建模板以提供给捆绑包。感谢您的参考,我找到了解决方案!您可以使用
IncludeDirectory()
方法代替
Include()
方法,例如:
bundles.Add(新脚本包(“~/bundles/plugins”).IncludeDirectory(“~/plugins”,“*.Plugin.js”,true))谢谢!
<system.web>
    <compilation debug="true" />

</system.web>
public static void RegisterBundles(BundleCollection bundles) {


    bundles.Add(new ScriptBundle("~/bundles/AnyName").Include(
            "~/Scripts/Plugins/*.js"));    // this will all the files in the plugins folder with .js extension
                                           //you can specify files separately if dont want to use wildcards

      BundleTable.EnableOptimizations = true;
}