O ile wiem (ponieważ dokumentacja na System.Web.Optimization
jest bardzo rzadka), sposób w jaki pakiet działa w ASP.NET polega na tym, że rejestrujesz zestaw plików (JavaScript lub CSS, odpowiadający ScriptBundle
i StyleBundle
) i powiążesz je z wirtualną ścieżką; na przykład ~/bundles/jqueryui
dla wszystkich skryptów jQuery UI. Później program ASP.NET może zminimalizować te pliki, gdy uruchomiony jest tryb inny niż debugowanie, a wersja minified zostanie udostępniona w ścieżce wirtualnej określonej dla pakunku.Powiązanie ASP.NET - domyślne ścieżki wirtualne?
Domyślna konfiguracja pakunku rejestruje niektóre pakiety skryptów z ~/bundles/...
jako ścieżkę wirtualną, a niektóre z CSS z ~/Content/css
jako ścieżką wirtualną. Moje pytanie brzmi, czy to nie jest niespójne? Czy nie ma większego sensu posiadanie czegoś takiego jak ~/bundles/js/...
i ~/bundles/css/...
? W rzeczywistości katalog ~/Content
faktycznie istnieje jako prawdziwy katalog, więc istnieje nawet ryzyko kolizji nazwy. Sądziłem, że chcesz, aby ścieżki wirtualnych pakietów były katalogami, które domyślnie nie istnieją i nie mają być tworzone w rzeczywistym systemie plików. Czy jest jakiś powód, dla którego ~/Content/css
jest używany dla wirtualnych ścieżek pakietów CSS, których nie rozumiem?
Dzięki, ta odpowiedź wydaje się być prawdopodobnie powodem, dla którego Microsoft to zrobił i nie pomyślałam o tym. Myślę, że byłoby bardziej spójne, gdyby użyli domyślnych ścieżek czegoś takiego jak '~/Content/cssBundles' i' ~/Content/jsBundles'. – Jez
@jez Pracuję w Microsoft w zespole MVC, więc wiem to na pewno :) – Eilon
Istnieje CssUrlRewriteTransform teraz, aby rozwiązać ten problem. Przepisuje adresy URL w plikach CSS, więc są one względne względem katalogu wirtualnego, a nie oryginalnego katalogu; w ten sposób może znaleźć pliki w oryginalnym katalogu pomimo nowej lokalizacji pliku CSS. – Triynko