Just a heads up for now. I’ll track down where to report this or to whom in the morning. Excuse any spelling, grammar, sloppiness of screenshots, etc., I’m doing this pretty quickly before heading out for the day.
tl;dr If you create ScriptBundles that recurse through subdirectories, and if you want to keep optimizations off for debug, stay on Microsoft.AspNet.Web.Optimization 1.0.0. If you go to 1.1.0, force EnableOptimizations=true, or your scripts from subdirectories won’t come through.
I had the good fortune to do a File > New Project a couple of days ago. When I did, I grabbed the bundling package
Install-Package Microsoft.AspNet.Web.Optimization
To keep this simple (i.e., to provide a reduction), I am including just two scripts here. Scripts/foo.js logs “foo”, and Scripts/subdir/bar.js logs “bar”.
I create a simple, standard ScriptBundle that should pick these up.
BundleTable.Bundles.Add(new ScriptBundle("~/scripts/bundle") .IncludeDirectory("~/Scripts", "*.js", true));
When I include these on the Home/Index view using
@System.Web.Optimization.Scripts.Render("~/scripts/bundle")
Only foo gets logged.
But if I downgrade to 1.0.0
Uninstall-Package Microsoft.AspNet.Web.Optimization Install-Package Microsoft.AspNet.Web.Optimization –version 1.0.0
Then they both get logged.
If we update back to the 1.1.0 package, we can look in Fiddler and see the problem.
Optimization is recognizing that there’s a bar.js somewhere, but the bundle loses track of the fact that it’s in a subdirectory. Of course, this is in debug mode where the optimizations are not enabled and the scripts are still delivered separately. Let’s see if enabling the optimization to deliver the bundle itself will help us.
BundleTable.EnableOptimizations = true;
Now both statements are logged.
Of course, looking at the delivered bundle, we can see that the contents of both scripts are there. In other words, you wouldn’t see this problem in Release or if you’re explicitly forcing the optimizations into effect.
I lost a fair bit of time the other day thinking that I had mistyped something setting up my ScriptBundle or a similar mistake. Even after I saw the 404s in Fiddler, I blamed myself and kept looking for my own error. Then I realized that the package version was different and took this wild guess =) Hope this helps save someone from similar trouble until the problem is resolved.
This article have many useful informations that is helpful to me. I have subscribe will check back every day for new post.
I found this article while researching this very problem. I was on v1.1.1. Before downgrading, I checked to see if a new version was out first. There was so I installed v1.1.3 and it is working as it should!
Thank you for this information. It greatly minimized my effort to find a solution.
Thank you both (OP and “Anonymous”) — I too ran into this issue and you saved me a bunch of time.
Yes, this is indeed an annoying “feature”. Any chance of a fix Microsoft?
This appears to have been fixed in version 1.1.3
a
Thank you for this informtion, this saved my time and efforts to find a solution.