我创建了一个新的 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)。有趣的是,当我更改ScriptBundle为Bundle之后,它就开始工作了。无论如何,我认为这不是一个合适的解决方案,您有什么想法如何使其符合标准吗ScriptBundle?
尝试更换:
\n bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(\n "~/Scripts/bootstrap.js"));\nRun Code Online (Sandbox Code Playgroud)\n和:
\nbundles.Add(new Bundle("~/bundles/mybundle").Include(\n "~/Scripts/bootstrap.js.");\nRun Code Online (Sandbox Code Playgroud)\n在捆绑配置中。
\n这个新的 Bundle()将捆绑您的资产而不缩小。在某些情况下,缩小不适用于某些库,因此这仍然允许您将它们包含在捆绑包中。
\nScriptBundle 和 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| 归档时间: |
|
| 查看次数: |
2035 次 |
| 最近记录: |