有没有办法以编程方式导出/保存生成的javascript和css包?

时间:2014-08-19 17:04:02

标签: c# javascript css .net-4.5 bundling-and-minification

我正在使用System.Web.Optimization BundleTable进行CSS和JavaScript文件捆绑。我可以通过转到Chrome Developer ToolsSources标签然后点击我要保存的捆绑包然后点击代码上的鼠标右键Save as(下面的屏幕截图)来手动保存捆绑文件

enter image description here

我想知道有没有办法以编程方式保存它们(javascript或.NET我不介意以太)因为我需要通过将它们与旧版本进行比较来测试捆绑文件中的更改看看他们是否有所改变。最终产品最有可能是硒测试。

1 个答案:

答案 0 :(得分:2)

自己排序。

    public static string GetBundleContents(string virtualPath)
    {
        OptimizationSettings config = new OptimizationSettings()
        {
            ApplicationPath = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath,
            BundleTable = BundleTable.Bundles
        };

        BundleResponse response = Optimizer.BuildBundle(virtualPath, config);
        return response.Content;
    }

    public static void WriteBundlesToDisk(string path)
    {
        foreach (var bundle in BundleTable.Bundles)
        {
            var bundleContents = BundleConfig.GetBundleContents(bundle.Path);
            File.WriteAllText(string.Format("{0}/{1}.{2}", path, bundle.Path.Split('/').Last(), BundleConfig.GetFileExtensionByBundleType(bundle)), bundleContents);
        }
    }

    public static string GetFileExtensionByBundleType(Bundle bundle) 
    {
        if (bundle is ScriptBundle)
            return "js";
        else if (bundle is StyleBundle)
            return "css";
        return "folderBundle";
    }

用法:

BundleConfig.WriteBundlesToDisk("c://bundles");

旁注:有一种名为System.Web.Optimization.DynamicFolderBundle的捆绑包,上面的解决方案无法正确处理,它会将其保存为.folderBundle文件类型。