Bundle ASP.Net MVC4 pour moins de fichiers non rendus lorsque le débogage est défini sur false
Dans un simple ASP.Net MVC4 application de test, j'ai installé le sans point de package NuGet et suivez ce tutoriel.
Mon .less
fichiers sont correctement analysés en CSS et fonctionne parfaitement quand debug=true
.
<link href="/Public/less/main.less" rel="stylesheet"/>
<link href="/Public/less/home.less" rel="stylesheet"/>
<link href="/Public/less/a.less" rel="stylesheet"/>
<link href="/Public/less/b.less" rel="stylesheet"/>
<link href="/Public/less/c.less" rel="stylesheet"/>
Cependant lorsque j'ai mis debug=false
afin de rapetisser et de les combiner en une seule feuille de style, j'obtiens ceci:
<link href="/Public/less?v=" rel="stylesheet"/> //NOT WORKING!
Voici mon bundle fichier de configuration, de nouveau, pris directement à partir du tutoriel:
public class BundleConfig
{
//For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
public static void RegisterBundles(BundleCollection bundles)
{
//Compile .less files and create a bundle for them.
var lessBundle = new Bundle("~/Public/less").Include(
"~/Public/less/main.less",
"~/Public/less/home.less",
"~/Public/less/a.less",
"~/Public/less/b.less",
"~/Public/less/c.less");
lessBundle.Transforms.Add(new LessTransform());
lessBundle.Transforms.Add(new CssMinify());
bundles.Add(lessBundle);
}
}
Et dans mon fichier de Mise en page:
<head>
@Styles.Render("~/Public/less")
</head>
Et voici mon LessTransform classe:
public class LessTransform : IBundleTransform
{
public void Process(BundleContext context, BundleResponse response)
{
response.Content = dotless.Core.Less.Parse(response.Content);
response.ContentType = "text/css";
}
}
Toutes les idées sur pourquoi le bundle ne fonctionne pas correctement sur debug=false
?
source d'informationauteur sergserg
Vous devez vous connecter pour publier un commentaire.
Le regroupement et la Minification MVC 4.0 par défaut est désactivé dans le mode de débogage, car minification et le groupement de faciliter le débogage très difficile, voire parfois impossible. Vous pouvez tester en mettant un point d'arrêt sur
LessTransform.Process
méthode.LessTransform.Process
invoqué lorsque le projet est exécuté avecdebug = false
ouBundleTable.EnableOptimizations = true
.<link href="/Public/less?v=" />
signifie que le résultat de l'ensemble est vide.Veuillez assurez-vous qu'au moins un des fichiers de produire le CSS du contenu, si oui, vérifiez le
LessTransform
classe elle doit être:En mettant
BundleTable.EnableOptimizations = true;
dans RegisterBundles méthode, vous pouvez remplacer le réglage par défaut de mécanisme d'optimisation (Regroupement et la minification) en mode debug, alors vous pouvez déboguer et de vérifier le résultat deLess.Parse(response.Content);
La question était silencieux d'erreur lors de la compilation de la
.less
encss
.J'ai utilisé un point d'arrêt pour vérifier mon
LessTransform
classe qui utilise ladotless
bibliothèque pour compiler.J'ai remarqué que lors du survol d'
response.Content
je pouvais voir monless
code, mais après laLess.Parse
code,response.Content
deviendrait vide.J'ai couru mon
less
code par l'intermédiaire d'un vérificateur et a remarqué une erreur de syntaxe dans mon code.Une fois j'ai corrigé mon erreur, le regroupement et la minification travaillé correctement comme prévu.
Si je ne suis malentendu ce que vous avez dit ne fait pas de sens.
Lorsque vous avez
debug = true
il semblerait que vos feuilles de style ne sont pas regroupés en tant qu'ils sont référencés individuellement donc pas minifiés/regroupé dans un seul fichier, ce qui est attendu lors de debug est définie sur true afin que vous pouvez facilement déboguer vos scripts/styles sans avoir à patauger dans la minifiés et livré code.Lorsque vous avez
debug = false
il semblerait que la minification/regroupement se produit que vous obtenez seulement deux url.Une chose qui n'a pas l'air étrange, c'est que moins d'url ne dispose pas d'une table de hachage associée avec ie. v= est vide, cela pourrait être quelque chose à voir.
Vous pouvez également essayer de charger l'url
<localaddress>/Public/less?v=
dans votre navigateur et de voir de quoi il en retourne si elle a de la difficulté à minifying/regroupement il sera généralement vous donner un avertissement au début du fichier.Semble que vous avez de vide moins de fichiers. Il est donc normal que de hachage n'est pas générée.
Juste pour que vous le savez. Vous n'avez pas besoin d'utiliser bundle pour moins de fichiers. Vous pouvez utiliser le mot-clé import insinde moins pour combiner des fichiers.
@import ".moins";