.NET Core2.0 bundleconfig.json无效

我正在努力尝试捆绑在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中添加了以下内容

                 @RenderSection("Scripts", required: true)  

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

使用源“ https:// localhost:44301 / wwwroot / js / site.min.js ”的加载失败。
使用源“ https:// localhost:44301 / wwwroot / js / jquery.min.js ”的加载失败。
使用源“ https:// localhost:44301 / wwwroot / js / bootstrap.min.js ”的加载失败。
带有源“ https:// localhost:44301 / wwwroot / js / jquery-datatables.min.js ”的加载失败

有人可以帮帮我吗?

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

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

默认情况下,没有任何捆绑和缩小内容安装在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包。 我还没有这样做。

我也取消选中了[Produce Output Files]选项,然后再次选中它(检查),当我这样做时,另一个文件是在我的解决方案下创建的,名为bundleconfig.json.bindings的bundleconfig.json 。 该文件只包含一行:

 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.css中更新了。

做出改变,改变它

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

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

问题是你的路径中没有使用wwwroot。 问题是你在wwwroot之前使用〜符号,它告诉浏览器使用根路径(wwwroot)和你的路径后面的内容,这也是wwwroot。

您可以使用绝对路径

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

或相对路径

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

两者都不是同时,因为相对路径用〜或../符号补充完整路径

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

代替:

 { "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" ] } 

根据微软的文档。

BuildBundlerMinifier NuGet包允许在构建时执行捆绑和缩小。

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