With SignalR now available as a Release Candidate from Microsoft, we found that our script bundling no longer worked. Our BundleConfig contained a statement to register the bundle and include the version-based file.
bundles.Add(new ScriptBundle(“~/bundles/signalr”).Include(
“~/Scripts/jquery.signalR-{version}.js”));
Once upgrading from 0.5.3 to 1.0.0-rc2 via NuGet, the bundle request returned an empty response. Downgrading back to 0.5.3 fixed the issue and our bundle request returned as expected.
Hardcoding the entry by replacing “{version}” with “1.0.0-rc2” also resolved the issue, so the {version} parsing was not working for some reason. Presumably, {version} was supposed to be replaced with the installed version of the product during bundling. A check of packages.config showed that the version for SignalR was correctly set to “1.0.0-rc2”.
It turns out that {version}, rather than being replaced with the installed version number, is simply a regex matching pattern for version numbers in a format similar to #.#.#. It does not look for a particular version number, but rather anything that looks like a version number. In this case, it is getting tripped up on the “-rc2” in the script name. You can work around this without breaking future (non-Prerelease) upgrades by adding the following to ScriptBundle configuration.
bundles.Add(new ScriptBundle(“~/bundles/signalr”).Include(
“~/Scripts/jquery.signalR-{version}.js”,
“~/Scripts/jquery.signalR-1.0.0-rc2.js”));
It’s not the most dynamic solution, but it does allow bundling to immediately work with any upgrades. The only caveat would be what if upgrading to a different Prerelease version (rc3, for example), an update to the config would be required. While there is wildcard (*) support, Microsoft advises against using it in most cases, preferring that scripts be hardcoded. So for now, this is probably the least painful solution.