Caractère générique {version} dans le bundle MVC4

155

Dans MVC 4, nous avons des bundles. Lors de la définition des bundles, nous pouvons utiliser des caractères génériques tels que * pour tous les fichiers d'un dossier.

Dans l'exemple ci-dessous, qu'est-ce que cela -{version}signifie?

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/jquery-{version}.js"));
}
Ricardo Polo Jaramillo
la source

Réponses:

177

Les -{version}cartes de fond à une version regex , ou pour être précis: (\d+(?:\.\d+){1,3}).
L'utilisation a *tendance à en prendre trop, par exemple si vous groupez jquery*, cela inclura jquery-uiégalement ce qui pourrait gâcher la commande. Mais utiliser jquery-{version}.jsvous éviterait d'avoir à mettre à jour la définition de votre bundle chaque fois que vous mettez à jour jquery.

Points supplémentaires à noter:

  • {version} ne fonctionne que pour la dernière partie du chemin - essentiellement le nom du fichier - pas un répertoire.
  • plusieurs versions de jquery dans le même dossier seront toutes rattrapées.
Hao Kung
la source
2
Comment cela fonctionnerait-il avec plusieurs versions d'ex: jquery présentes dans le dossier?
pavsaund
18
C'est une regex donc elle inclurait toutes les correspondances, donc si vous aviez plusieurs versions dans le même répertoire, vous ne voudriez probablement pas l'utiliser.
Hao Kung
3
Notez que {version} ne semble pas fonctionner dans un chemin. Au travail, nous avons la version bootstrap dans le chemin (pas dans le nom du fichier), donc j'essaye de faire ceci: "~ / Content / Libraries / bootstrap / {version} /css/bootstrap.css" Mais quand je cours RegisterBundles, j'obtiens une ArgumentException qui dit «l'annuaire n'existe pas».
Michael Nelson
4
votez pour ne pas travailler dans un annuaire. Des solutions pour le faire fonctionner dans un annuaire?
Zapnologica
3
Edit: tant pis, ils l'expliquent clairement ici! asp.net/mvc/overview/performance/bundling-and-minification Merci!
Jon Koeter
12

Ce bundle est capable d'accueillir les numéros de version dans les noms de script. Ainsi, la mise à jour de jQuery vers une nouvelle version de votre application (via NuGet ou manuellement) ne nécessite aucune modification de code / balisage.

Consultez le lien suivant pour plus d'informations sur le regroupement: http://weblogs.asp.net/jgalloway/archive/2012/08/16/asp-net-4-5-asp-net-mvc-4-asp-net- web-pages-2-et-visual-studio-2012-web-developer-features.aspx

MUG4N
la source
3
Tant que vous vous assurez que les anciennes versions sont effectivement supprimées.
Triynko
Lorsque j'utilise {version}, je reçois Jquery n'est pas défini et lorsque je remplace par la version actuelle, dans mon cas 3.1.1 cela fonctionne très bien.
Marc Roussel
0

~/Scripts/jquery-{version}.jsy est inclus. Ici, le système de regroupement est suffisamment intelligent pour référencer la version la plus élevée du fichier jquery lorsque nous avons spécifié le sélecteur {version} dans le chemin. En outre, ce système de regroupement est suffisamment intelligent pour sélectionner la version minifiée du fichier, si elle est disponible au chemin défini.

Leoli
la source