Bundler & Minifier 生成 "Object reference not set to an instance of an object" 错误

Bundler & Minifier generating "Object reference not set to an instance of an object" error

我正在尝试使用 BuildBundlerMinifier.Core 在 ASP.NET Core 3.0 中捆绑和缩小我的 CSS 和 JS 文件。 还为 Visual Studio 2019 安装了 Bundler & Minifier 扩展。

当我尝试调试项目时,它可以正常工作,没有错误,但是当我重建它时,出现以下错误;

Object reference not set to an instance of an object

重新启动时我没有收到错误消息 Visual Studio 我可以再次调试项目,但如果我再次重建它,我收到错误消息。

bundleconfig.json个文件

[
  {
    "outputFileName": "wwwroot/assets/css/style.bundle.min.css",
    "inputFiles": [
      "wwwroot/assets/plugins/global/plugins.bundle.css",
      "wwwroot/assets/css/style.bundle.css",
      "wwwroot/assets/css/skins/header/base/light.css",
      "wwwroot/assets/css/skins/header/menu/light.css",
      "wwwroot/assets/css/skins/brand/light.css"
    ],
    "sourceMap": false,
    "sourceMapRootPath": null
  }
,
{
  "outputFileName": "wwwroot/assets/js/scripts.min.js",
  "inputFiles": [
    "wwwroot/assets/plugins/global/plugins.bundle.js",
    "wwwroot/assets/js/scripts.js",
    "wwwroot/assets/js/pages/dashboard.js",
    "wwwroot/content/js/mobil-detect.js",
    "wwwroot/content/js/lazy-img.js",
    "wwwroot/content/js/ziyaretci.js"
  ]
}
]

Visual Studio、Bundler & Minifier 扩展、BuildBundlerMinifier 和 BuildBundlerMinifier.Core 是最新的 我该如何解决?

该项目有 BuildBundlerMinifier 和 BuildBundlerMinifier.Core。我从 nuget 中删除了 BuildBundlerMinifier,现在它可以工作了。

如果您碰巧(像我一样)在您的目录名称中的某处有一个哈希 (#),使用 BuildBundlerMinifier 的 .NET Core 3.1 将破坏缩小。

我花了一些时间才弄明白,包括卸载和重新安装 nuget 包和 Visual Studio 扩展。

我想知道是否还有其他特殊字符导致了这个问题。

您可以在 bundleconfig.json.

中轻松看到这一点

示例文件夹结构:

C:\MyProjects\C#Test\MySolution\MyProject\wwwroot\js\

如果损坏,它将看起来像:

[
  {
    "outputFileName": "#Test\MySolution\MyProject\wwwroot\js\Math.min.js",
    "inputFiles": [
      "#Test\MySolution\MyProject\wwwroot\js\Math.js"
    ]
  }
]

而不是

[
  {
    "outputFileName": "wwwroot/js/Math.min.js",
    "inputFiles": [
      "wwwroot/js/Math.js"
    ]
  }
]

这可能是您的某个 js 文件源代码中的语法问题。 在我的例子中,使用无效合并运算符“??”是问题所在。 将其替换为简单的“if”空检查,编译错误消失了。

在我的例子中,这是因为可选的链接运算符,即 ?

通过重构所有“??”解决使用“?:”条件(三元)运算符取消合并运算符。