Attualmente sto lavorando a un progetto che utilizza la libreria ASP.NET Web Optimization (v 1.1.0-Beta1) in combinazione con l'estensione Bundle Transformer (v 1.7.3-Beta1 per core, 1.7.0-Beta1 per MENO) che viene utilizzato convertire LESS in CSS. In base ai percorsi di ricerca sul Web all'interno di CSS (e meno) sembra essere un problema comune, nella maggior parte dei casi si consiglia di modificare manualmente il CSS e farlo con esso. Tuttavia, a causa delle differenze tra il nostro ambiente di sviluppo e di produzione, e non con il proprietario di, il CSS interessato non è possibile.Qual è l'uso corretto di IItemTransform per correggere i percorsi nel bundle CSS con ASP.NET Web Optimization e BundleTransformer?
Due soluzioni sembrano esistere. Il primo è quello di sovrapporre la directory virtuale definita dal raggruppamento sulla directory effettiva che contiene il contenuto. Per me questa sembra una scelta scadente.
In secondo luogo, e il percorso che ho scelto, è quello di utilizzare un IItemTransform
come CssRewriteUrlTransform
(menzionato nella this post. Anche questa soluzione ha i suoi limitations. Come tale ho tentato di scrivere il mio ItemTransformer
ma sembra che il risultati della sua esecuzione viene ignorato quando viene utilizzato nel modo seguente:
public static void RegisterBundles(BundleCollection bundles)
{
/* among other work pass in IItemTransformer to fix paths */
var styleBundle = new StyleBundle("~/bundles/css/styles")
.Include(...)
.Include("~/Content/less/font-awesome.less", new RewriteUrlTransform())
.Include(...);
styleBundle.Transforms.Add(new CssTransformer());
styleBundle.Orderer = new NullOrderer();
bundles.Add(styleBundle);
}
Attuazione IItemTransform:
public class RewriteUrlTransform : IItemTransform
{
public string Process(string includedVirtualPath, string input)
{
return (input manipulated with proper path replacing bad path)
}
}
a meno che io sono del tutto Misun Doveroso come va usato un IItemTransform
, il che è del tutto possibile a causa della mancanza di documentazione, penserei che il ritorno del metodo Process sia il nuovo post processato CSS. Tuttavia, il ritorno sembra essere ignorato. L'input originale è sempre in uso, anche quando restituisco uno String.Empty()
. Sto facendo qualcosa di sbagliato qui o è davvero un bug?
Inoltre ho preso in considerazione [Casset] (http://getcassette.net/) e ho determinato che non è una buona soluzione per i miei bisogni in quanto non si presta alla creazione di più bundle e li richiede esplicitamente in momenti diversi durante il rendering della pagina. – rheone
Hai sofferto per la mancanza di informazioni, ma ho risposto a questa domanda per via del titolo. Il punto è che ci sono alcuni problemi con la logica nello 'StyleBundle' originale quando si tratta di percorsi relativi nelle directory virtuali (e poche altre cose) e [ProperStyleBundle] (http://stackoverflow.com/a/27890912/551322) è quello che mi è venuto in mente. – nrodic