Как получить промежуточные итоги, чтобы они не отображались в сводной таблице

Я улучшил хорошее предложение Jon Malcolm (и некоторые обновления Satpal здесь ), чтобы исправить несколько недостатков, которые у него были:

1) Он нарушает поведение по умолчанию пакеты с «.min». файлы

2) Он не позволяет использовать шаблоны поиска, но только файлы, которые должны быть исключены

using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Optimization;


public static class BundleExtentions
{
    public static Bundle IncludeDirectoryWithExclusion(this Bundle bundle, string directoryVirtualPath, string searchPattern, bool includeSubDirectories, params string[] excludePatterns)
    {
        string folderPath = HttpContext.Current.Server.MapPath(directoryVirtualPath);

        SearchOption searchOption = includeSubDirectories
                                        ? SearchOption.AllDirectories
                                        : SearchOption.TopDirectoryOnly;

        HashSet excludedFiles = GetFilesToExclude(folderPath, searchOption, excludePatterns);
        IEnumerable resultFiles = Directory.GetFiles(folderPath, searchPattern, searchOption)
                                                    .Where(file => !excludedFiles.Contains(file) && !file.Contains(".min."));

        foreach (string resultFile in resultFiles)
        {
            bundle.Include(directoryVirtualPath + resultFile.Replace(folderPath, "")
                    .Replace("\\", "/"));
        }

        return bundle;
    }

    private static HashSet GetFilesToExclude(string path, SearchOption searchOptions, params string[] excludePatterns)
    {
        var result = new HashSet();

        foreach (string pattern in excludePatterns)
        {
            result.UnionWith(Directory.GetFiles(path, pattern, searchOptions));
        }

        return result;
    }
}

Пример использования, который у меня есть, заключается в том, чтобы включить все библиотеки из папки lib, начиная с угловым, но исключая все языковые скрипты (потому что только один будет добавлен на основе языка в отдельном пакете позже):

bundles.Add(new Bundle("~/bundles/scripts")
                .Include("~/wwwroot/lib/angular/angular.js") // Has to be first
                .IncludeDirectoryWithExclusion("~/wwwroot/lib", "*.js", true, "*.locale.*.js"));

Это будет вести себя правильно, если у вас есть угловые.min.js и angular.js и добавьте unminified версию в отладку и используя существующий .min.js в выпуске.

0
задан Dominic G. 11 March 2019 в 20:50
поделиться