.NET Core2.0 bundleconfig.json无效

use*_*664 9 c# bundle asp.net-core

我正在努力尝试捆绑在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
  }
]
Run Code Online (Sandbox Code Playgroud)

我安装了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>
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,不会加载资源.我收到以下错误:

对于<script>源" https:// localhost:44301/wwwroot/js/site.min.js ",加载失败.
对于<script>源" https:// localhost:44301/wwwroot/js/jquery.min.js ",加载失败.
对于<script>源" https:// localhost:44301/wwwroot/js/bootstrap.min.js ",加载失败.
对于<script>源" https:// localhost:44301/wwwroot/js/jquery-datatables.min.js ",加载失败

有人可以帮帮我吗?

小智 14

我厌倦了 Nuget 包管理器,但它没有用,然后卸载它,

解决了:

打开Nuget 包管理器控制台

Install-Package BuildBundlerMinifier -Version 2.8.391 
Run Code Online (Sandbox Code Playgroud)

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


rad*_*vus 7

我无法让这个工作,并了解到现在还有更多的问题.

默认情况下,没有任何Bundling和Minifying东西安装在dotnet核心剃刀页面项目中.

据推测,您可以通过右键单击Visual Studio Solution Explorer中的bundleconfig.json来检查您的设置.但这并没有在我的项目中显示任何内容.

我终于找到了一个Visual Studio加载项.

Bundler&Minifier - 手册

相反,我安装了一个手动捆绑器和缩放器 - 由同一作者(Mads Kristensen)编写,作为上面的Nuget pkg. https://marketplace.visualstudio.com/items?itemName=MadsKristensen.BundlerMinifier

这是一个Visual Studio扩展,在您安装它之后,您可以右键单击任何css或js文件,您将获得允许您"手动"缩小它们的菜单. 捆绑文件

在构建上启用bundle ...

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

我也选中该选项[产生输出文件],然后再次选择它(检查),当我这样做的另一个文件是在我的下方解决方案中创建bundleconfig.json命名bundleconfig.json.bindings.该文件只包含一行:

produceoutput=true
Run Code Online (Sandbox Code Playgroud)

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

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

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

更新所有捆绑包

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

工具和选项 您可以看到Bundler和Minifier在我的项目中将Product Output files选项设置为true(即使它仍然无效).

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

做出改变,改变它

奇怪的是当/如果你删除你的site.min.css然后它似乎没有随时重新生成.我想现在,如果你这样做,你可以进行更改并将其更改回来并创建最小文件.

我测试了一下:删除了site.min.css然后进行了更改,文件再次生成.奇怪的是,构建不会触发此功能.


Bon*_*Bon 6

根据 Microsoft此处的文档

BuildBundlerMinifier NuGet包能够捆绑和微小的在构建时执行。

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


小智 5

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

  • 这些解决方案都不起作用,我没有产生任何输出。这是完全的垃圾。为什么Microsoft会在事情进展顺利时做这些事情使您烦恼呢? (4认同)

Abi*_*i P 5

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

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