2014-03-24 19 views
8

Ich sehe ein seltsames Verhalten mit Bündelung in meinem ASP.Net MVC 5-Projekt. Mein Projekt funktioniert gut, wenn ich alle Dateien in meiner BundleConfig.cs Datei explizit erklären, wie folgt:ASP.Net MVC 5 Unterverzeichnis Bündelungsprobleme

bundles.Add(new ScriptBundle("~/bundles/app").Include(
       "~/app/app.js", 
       "~/app/config.js", 
       "~/app/dir1/file1.js", 
       "~/app/dir1/subdir1/file2.js", 
       ..... 

Allerdings, wenn ich wechseln IncludeDirectory stattdessen zu verwenden, die Skriptpfade während der Entwicklung (BundleTable.EnableOptimizations = false) sind nicht vollständig. Das ist, was ich sehe:

bundles.Add(new ScriptBundle("~/bundles/app").Include(
       "~/app/app.js", 
       "~/app/config.js") 
       .IncludeDirectory("~/app/dir1", "*.js", true) 

Chrome zeigt mir ein 404, wenn es versucht, file2.js zu bekommen. Die Bündelung System fügt die folgenden meine Layoutseite:

<script src="/app/app.js"></script> 
<script src="/app/config.js"></script> 
<script src="/app/dir1/file1.js"></script> 
<script src="/app/dir1/file2.js"></script> 

Der Weg zum file2.js falsch ist. Es enthält den subdir1 Teil des Pfades. Fehle ich hier etwas?

+0

'Es lässt die dir2 Teil des path'. Meinst du "subdir1"? – Curt

+0

ja - tut mir leid. behoben. –

+0

Das ist seltsames Verhalten. Der Bundler sollte Verzeichnissen nicht rekursiv folgen. Wenn Sie also "~/app/dir1" einschließen, sollten nur Dateien sofort in diesem Verzeichnis enthalten sein. Wenn es auch Dateien in Unterverzeichnissen enthält, während dieses Unterverzeichnis im Pfad nicht enthalten ist, ist das ein neues für mich. Im Allgemeinen ist Ihre beste Vorgehensweise hier, explizit zu sein. Wenn Sie eine Datei enthalten möchten, fügen Sie diese explizit hinzu. Dinge wie 'IncludeDirectory' sind meiner Meinung nach gefährlich. –

Antwort