ho migliorato il buon suggerimento da Jon Malcolm (e alcuni aggiornamenti di Satpal here) per risolvere alcune carenze che aveva:
1) Si rompe il comportamento predefinito dei fasci con" .min ". file
2) non consentono modelli di ricerca, ma solo i file da escludere
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<string> excludedFiles = GetFilesToExclude(folderPath, searchOption, excludePatterns);
IEnumerable<string> 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<string> GetFilesToExclude(string path, SearchOption searchOptions, params string[] excludePatterns)
{
var result = new HashSet<string>();
foreach (string pattern in excludePatterns)
{
result.UnionWith(Directory.GetFiles(path, pattern, searchOptions));
}
return result;
}
}
Un esempio d'uso che ho è di includere tutte le librerie dalla cartella lib iniziando con angolare, ma escludendo ogni gli script di locale (perché saranno aggiunti un solo basano sulla lingua in un fascio separata in seguito):
bundles.Add(new Bundle("~/bundles/scripts")
.Include("~/wwwroot/lib/angular/angular.js") // Has to be first
.IncludeDirectoryWithExclusion("~/wwwroot/lib", "*.js", true, "*.locale.*.js"));
Ciò comportarsi correttamente se si dispone di entrambe le angular.min.js e angular.js e aggiungere la versione unminified in eseguire il debug e utilizzare il file .min.js esistente nella r Elease.
fonte
2016-03-18 09:26:46
Perché non spostare semplicemente il file css da quella directory? –
beh, naturalmente posso farlo e specificare un altro pacchetto per questo file, ma sarebbe meglio avere tutti i file in una directory e se non ne ho bisogno, lo escluderò semplicemente dal pacchetto – xurca
Hai un sacco di file? È possibile registrare ciascun css singolarmente se si dispone di un numero limitato di file. –