更新 NuGet 包后出现 System.NullReferenceException

mus*_*a00 3 c# asp.net-mvc

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

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

在调试模式下,此错误来自此行:

@Scripts.Render("~/bundles/bootstrap")
Run Code Online (Sandbox Code Playgroud)

我没有触及代码中的任何内容,只是更新了 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"));
        }
Run Code Online (Sandbox Code Playgroud)

我已经安装了 Bootstrap,并且所有文件都位于正确的目录中(css inContent和 js in Scripts)。有趣的是,当我更改ScriptBundleBundle之后,它就开始工作了。无论如何,我认为这不是一个合适的解决方案,您有什么想法如何使其符合标准吗ScriptBundle

Saf*_*oob 6

尝试更换:

\n
 bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(\n                  "~/Scripts/bootstrap.js"));\n
Run Code Online (Sandbox Code Playgroud)\n

和:

\n
bundles.Add(new Bundle("~/bundles/mybundle").Include(\n        "~/Scripts/bootstrap.js.");\n
Run Code Online (Sandbox Code Playgroud)\n

在捆绑配置中。

\n

这个新的 Bundle()将捆绑您的资产而不缩小。在某些情况下,缩小不适用于某些库,因此这仍然允许您将它们包含在捆绑包中。

\n

ScriptBundle 和 Bundle 之间的唯一区别是 ScriptBundle 使用JsMinify变换(默认变换) \xe2\x80\x93 这对于 StyleBundle 与 Bundle 也是相同的(使用 CssMinify 。脚本包的这种缩小总是会发生,即使在调试模式下也是如此。

\n

\xe2\x80\x99s 因为在 MVC 中通常你\xe2\x80\x99 将使用@Scripts.Render HTML Helper 来渲染你的包。该帮助器将枚举捆绑包并将直接路径添加到文件中,从而完全避免调试模式的捆绑路由。但是,如果您确实想显示未从捆绑包路径缩小的捆绑包,则\xe2\x80\x99将需要使用\xe2\x80\x9cBundle\xe2\x80\x9d而不是\xe2\x80\x9cScriptBundle\ xe2\x80\x9d(或清除 ScriptBundle / StyleBundle 中的转换)

\n