我正在使用System.Web.Optimization
BundleTable
进行CSS和JavaScript文件捆绑。我可以通过转到Chrome Developer Tools
,Sources
标签然后点击我要保存的捆绑包然后点击代码上的鼠标右键Save as
(下面的屏幕截图)来手动保存捆绑文件
我想知道有没有办法以编程方式保存它们(javascript或.NET我不介意以太)因为我需要通过将它们与旧版本进行比较来测试捆绑文件中的更改看看他们是否有所改变。最终产品最有可能是硒测试。
答案 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
文件类型。