更新NuGet包后出现System.NullReferenceException错误提示

3

我创建了一个新的MVC项目(简单模板),运行时一切正常。但当我更新NuGet包后,运行我的项目时出现了错误:

System.NullReferenceException:对象引用未设置为对象的实例

在调试模式下,这个错误是由这一行引起的:

@Scripts.Render("~/bundles/bootstrap")

我没有更改任何代码,只是更新了 NuGet 包。我的捆绑包看起来很标准,就像这样:

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

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.validate*"));

            bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                        "~/Scripts/modernizr-*"));

            bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
                      "~/Scripts/bootstrap.js"));

            bundles.Add(new StyleBundle("~/Content/css").Include(
                      "~/Content/bootstrap.css",
                      "~/Content/site.css"));
        }

我已安装Bootstrap并且所有文件都在正确的目录中(css在Content,js在Scripts)。 有趣的是,当我将ScriptBundle更改为Bundle时,它开始工作了。无论如何,我认为这不是一个合适的解决方案,你有什么办法让它使用标准的ScriptBundle来运行吗?


我也一样。看起来 Bootstrap 5.1 引起了这个问题。 - Jay
1个回答

6

尝试替换:

 bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
                  "~/Scripts/bootstrap.js"));

使用:

bundles.Add(new Bundle("~/bundles/mybundle").Include(
        "~/Scripts/bootstrap.js.");

在捆绑配置中。

这个新的Bundle()将不进行缩小捆绑你的资产。某些情况下,缩小可能与某些库不兼容,因此这仍然允许您将它们包含在您的捆绑中。

ScriptBundle和Bundle之间唯一的区别是ScriptBundle使用JsMinify变换(默认的)——StyleBundle vs Bundle也是如此(使用CssMinify)。脚本捆绑上的这种缩小将始终发生,即使在调试模式下也是如此。

这是因为通常在MVC中,您会使用@Scripts.Render HTML助手来呈现您的捆绑。此帮助程序将枚举捆绑并添加文件的直接路径,从而完全避免了捆绑路线以进行调试模式。但是,如果您真的想显示从bundle route未经过缩小的捆绑,则需要使用“Bundle”而不是“ScriptBundle”(或清除ScriptBundle / StyleBundle中的转换)


此解决方案未正确显示CSS。 - ChE Junkie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接