【问题标题】:.NET Core2.0 bundleconfig.json not working.NET Core2.0 bundleconfig.json 不工作
【发布时间】:2020-05-19 22:37:07
【问题描述】:

我正在努力让捆绑在 Core 2.0 Web 应用程序中工作。我的 bundleconfig.json 文件中有以下内容:

[
  {
    "outputFileName": "wwwroot/css/site.min.css",
    "inputFiles": [
      "wwwroot/css/site.css"
    ]
  },
  {
    "outputFileName": "wwwroot/css/bootstrap.min.css",
    "inputFiles": [
      "wwwroot/lib/bootstrap/dist/css/bootstrap.css",
    ]
  },
  {
    "outputFileName": "wwwroot/css/jquery-datatables.min.css",
    "inputFiles": [
      "wwwroot/lib/jquery/jquery-datatables/datatables.css",
      "wwwroot/lib/jquery/jquery-datatables/Responsive-2.2.1/css/responsive.dataTables.css"
    ]
  },
  {
    "outputFileName": "wwwroot/js/site.min.js",
    "inputFiles": [
      "wwwroot/js/site.js"
    ],
    "minify": {
      "enabled": true,
      "renameLocals": true
    },
    "sourceMap": false
  },
  {
    "outputFileName": "wwwroot/js/jquery.min.js",
    "inputFiles": [
      "wwwroot/lib/jquery/dist/jquery.js",
    ],
    "minify": {
      "enabled": true,
      "renameLocals": true
    },
    "sourceMap": false
  },
  {
    "outputFileName": "wwwroot/js/bootstrap.min.js",
    "inputFiles": [
      "wwwroot/lib/bootstrap/dist/js/bootstrap.js"
    ],
    "minify": {
      "enabled": true,
      "renameLocals": true
    },
    "sourceMap": false
  },
  {
    "outputFileName": "wwwroot/js/jquery-datatables.min.js",
    "inputFiles": [
      "wwwroot/lib/jquery/jquery-datatables/datatables.js",
      "wwwroot/lib/jquery/jquery-datatables/Responsive-2.2.1/js/dataTables.responsive.js"
    ],
    "minify": {
      "enabled": true,
      "renameLocals": true
    },
    "sourceMap": false
  }
]

我安装了 BuildBundlerMinifier NugGet 包。当我构建项目时,我看到正在处理 bundleconfig.json 文件。
我在 _Layout.cshtml 中添加了以下内容:

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />                        
    <environment include="Development,Staging,Production">
        <link rel="stylesheet" href="~/wwwroot/css/site.min.css" />
        <link rel="stylesheet" href="~/wwwroot/css/bootstrap.min.css" />
        <link rel="stylesheet" href="~/wwwroot/css/jquery-datatables.min.css" />            
    </environment>
</head>
<body>
    <environment include="Development,Staging,Production">
        <script src="~/wwwroot/js/site.min.js"></script>
        <script src="~/wwwroot/js/jquery.min.js"></script>
        <script src="~/wwwroot/js/bootstrap.min.js"></script>
        <script src="~/wwwroot/js/jquery-datatables.min.js"></script>            
    </environment>
    @RenderSection("Scripts", required: true)
</body>

当我运行应用程序时,没有加载资源。我收到以下错误:

源为“https://localhost:44301/wwwroot/js/site.min.js”的&lt;script&gt; 加载失败。
源为“https://localhost:44301/wwwroot/js/jquery.min.js”的&lt;script&gt; 加载失败。
源为“https://localhost:44301/wwwroot/js/bootstrap.min.js”的&lt;script&gt; 加载失败。
源为“https://localhost:44301/wwwroot/js/jquery-datatables.min.js”的&lt;script&gt; 加载失败

有人可以帮帮我吗?

【问题讨论】:

  • 你从哪里得到这个BuildBundlerMinifier 包?默认文件直接与 Web Essentials 2017 扩展一起使用
  • 我在这里得到了 BuildBundlerMinifier 的想法docs.microsoft.com/en-us/aspnet/core/client-side/…
  • 我已经在我的that 回答中说明了确切的解决方案

标签: c# asp.net-core bundle


【解决方案1】:

我厌倦了 Nuget 包管理器但它不起作用,然后卸载它,

已解决

打开 Nuget 包管理器控制台

Install-Package BuildBundlerMinifier -Version 2.8.391 

并再次重建解决方案。它对我有用。

【讨论】:

  • 我使用 Nuget 管理器安装/运行良好,但第二天它不再更新捆绑的文件。正如您提到的,我在解决方案级别进行了重建,然后再次开始进行常规项目构建。
【解决方案2】:

我无法让这个工作,并了解到目前还有更多问题。

默认情况下,在 dotnet core razor pages 项目中没有安装任何 Bundling & Minifying 东西。

您可以通过在 Visual Studio 解决方案资源管理器中右键单击 bundleconfig.json 来检查您的设置。但这在我的项目中没有显示任何内容。

我终于找到了一个 Visual Studio 插件

Bundler & Minifier -- 手册

相反,我安装了一个手动打包器和压缩器——它与上面的 Nuget pkg 由同一作者 (Mads Kristensen) 编写。 https://marketplace.visualstudio.com/items?itemName=MadsKristensen.BundlerMinifier

这是一个 Visual Studio 扩展,安装后,您可以右键单击任何 css 或 js 文件,然后您将获得允许您“手动”缩小它们的菜单。

在构建时启用捆绑包...

该选项将警告您它将安装 Nuget 包。我还没有这样做。

我还取消选中该选项 [生成输出文件],然后再次选择它(选中),当我这样做时,在我的解决方案中创建了另一个文件,名为 bundleconfig.json .json.bindings。该文件只包含一行:

produceoutput=true

奇怪的是它以前不存在。我知道该文件以前不存在,因为 git 告诉我有未跟踪的文件并提到了该文件。

为了测试工作室是否有问题,我创建了一个全新的 dotnet Core 2.x Razor Pages 项目,然后立即删除了 min.css 并尝试再次构建它,但它永远不会再次构建.

更新所有捆绑包 添加 .bindings 文件后,我再次构建,但捆绑包仍未构建。 然后我注意到我在 [Build] 菜单下还有另一个选项,但我不确定这是否是我安装的 Bundling & Minifying 插件,因此您在寻找此解决方案时必须考虑这一点。

您还可以在 Visual Studio [工具...选项...] 菜单中检查您的设置:

您可以看到 Bundler & Minifier 在我的项目中将 Product Output files 选项设置为 true(即使它仍然无法正常工作)。

实际上,我更仔细地阅读了底部的句子,我注意到它说“主动监听输入文件更改”,所以我去更改了我的 site.css 并注意到该值确实在站点中更新了。

做出改变,再改回来

奇怪的是当/如果你删除你的 site.min.css 那么它似乎不会在任何时候重新生成。我想现在如果您这样做,您可以进行更改并将其改回并创建 min 文件。

我对此进行了测试:删除了 site.min.css 然后进行了更改,并且再次生成了该文件。奇怪的是构建没有触发这个功能。

【讨论】:

  • 这很有帮助,我做了 lil 修改以使其正常工作。在下面发布为答案
【解决方案3】:

您必须删除网址中的 "wwwroot" 部分。 "wwwroot" 是您的应用程序运行的根文件夹。现在它将搜索 "...wwwroot/wwwroot/js..." 中的文件,而不是 "...wwwroot/js..."。 p>

【讨论】:

  • 这些解决方案都不起作用 我没有生成任何输出 这是完整的,完全是垃圾。为什么微软会在事情进展顺利的时候做这些事情来搞砸你?
  • bundleconfig.json 中文件的路径是相对于配置文件的。所以如果bundleconfig.json和wwwroot同级,我们需要把wwwroot添加到文件路径中。参考docs.microsoft.com/en-us/aspnet/core/client-side/…
【解决方案4】:

根据 Microsoft here. 的文档

BuildBundlerMinifier NuGet 包支持在构建时执行捆绑和缩小。

起初这也让我很恼火,因为默认情况下它没有安装,并且捆绑器的含义似乎是它应该只是内置工作。但事实并非如此。

【讨论】:

  • 那是因为:Bundler & Minifier 扩展属于 GitHub 上的社区驱动项目,Microsoft 不提供支持。您的答案不是 Microsoft 开发的解决方案。
  • 软件包的所有者(和作者)为 Microsoft 工作。他在写这本书时为微软工作。他们已经在他们的文档页面上记录了它。这不是唯一处于某种“几乎是微软”状态的项目。我猜你是对的,所以他们不必支持它。
【解决方案5】:

我所做的最终解决方案是 已删除 - &lt;PackageReference Include="BundlerMinifier.Core" Version="2.8.391" /&gt;
添加 - &lt;PackageReference Include="BuildBundlerMinifier" Version="2.9.406" /&gt; 以使其正常工作。

添加 VS 扩展并在构建步骤中启用包也会添加 BuildBundlerMinifier 包。

【讨论】:

    【解决方案6】:

    问题在于您的路径中没有使用 wwwroot。问题是您在 wwwroot 之前使用了 ~ 表示法,这告诉浏览器使用根路径 (wwwroot) 以及路径后面的内容,这也是 wwwroot。

    可以使用绝对路径

    "inputFiles": [
          "wwwroot/css/site.css"
        ]
    

    或者相对路径

     "inputFiles": 
          "~/css/site.css"
        ]
    

    两者不能同时出现,因为相对路径用 ~ 或 ../ 表示法补充完整路径

    对您的脚本的另一个观察。你为什么要把文件分开? 捆绑包的目的是您不必包含每个单独的文件。它将它们组合在一个缩小的文件中,并减少对服务器加载页面的请求。不要将数据表脚本与您的脚本分开。

    代替:

    {
        "outputFileName": "wwwroot/css/bootstrap.min.css",
        "inputFiles": [
          "wwwroot/lib/bootstrap/dist/css/bootstrap.css",
        ]
      },
      {
        "outputFileName": "wwwroot/css/jquery-datatables.min.css",
        "inputFiles": [
          "wwwroot/lib/jquery/jquery-datatables/datatables.css",
          "wwwroot/lib/jquery/jquery-datatables/Responsive-2.2.1/css/responsive.dataTables.css"
        ]
      },
    

    你应该输入:

    {
        "outputFileName": "wwwroot/css/myStyles.css",
        "inputFiles": [
          "wwwroot/lib/bootstrap/dist/css/bootstrap.css",
          "wwwroot/lib/jquery/jquery-datatables/datatables.css",
          "wwwroot/lib/jquery/jquery-datatables/Responsive-2.2.1/css/responsive.dataTables.css"
        ]
      }
    

    【讨论】:

      【解决方案7】:

      确实安装了 BuildBundlerMinifier.Core 版本 (3.0.415)。这不起作用,但是 BuildBundlerMinifier (3.0.415) 的非核心版本可以正常工作(在 asp.net core 2.2 项目中)。

      【讨论】:

      • 很奇怪,但卸载核心版本并安装普通版本也有效!
      【解决方案8】:

      安装BuildBundlerMinifier,它将有助于创建最小文件

      【讨论】:

      • 这就是我所缺少的!
      【解决方案9】:

      我今天遇到了这个问题。对我来说,关键是 nuget 包 (BuildBundlerMinifier) 不足以使其正常工作。您还需要安装Bundler and Minifier VS 扩展。从那里,您可以关注instructions here 以在构建时启用捆绑。请注意,如果您还没有 nuget 包,VS 扩展也会安装它。

      关于为什么这不能开箱即用,我认为这是因为这是 Mads 生产的一个相当新的 3rd-party 工具。

      【讨论】:

        【解决方案10】:

        除了上面raddevus给出的答案;在 Visual Studio 中打开任务资源管理器,展开 bundleconfig.json;右键单击 Update all files 并选择 Binding 然后 After build ... tad-dah!

        【讨论】:

          【解决方案11】:

          安装 VS 2017 Community 2017 版本 15.8.9 后

          捆绑和缩小停止工作

          在 NuGet 中安装不起作用

          所以,在工具菜单,扩展和更新中,在更新捆绑和缩小,并重新启动 VS 后,它开始工作

          现在,选择 bundleconfig.json 后,右键单击,在弹出菜单中,它会显示项目“Bundler & Minified”

          【讨论】:

          • 同时安装 madskristensen/WebEssentials2017 可以禁用 "Bundling & Minifying" ,都来自同一作者,看起来已经安装了 2 次​​span>
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-06-08
          • 2013-07-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-26
          • 2013-06-22
          相关资源
          最近更新 更多