C# .NET Core2.0 bundleconfig.json不工作
我正在努力让捆绑在核心2.0 web应用程序中工作。我的bundleconfig.json文件中有以下内容:C# .NET Core2.0 bundleconfig.json不工作,c#,asp.net-core,bundle,C#,Asp.net Core,Bundle,我正在努力让捆绑在核心2.0 web应用程序中工作。我的bundleconfig.json文件中有以下内容: [ { "outputFileName": "wwwroot/css/site.min.css", "inputFiles": [ "wwwroot/css/site.css" ] }, { "outputFileName": "wwwroot/css/bootstrap.min.css", "inputFiles": [
[
{
"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
}
]
我安装了BuildBundlerMinizier 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>
@RenderSection(“脚本”,必需:true)
当我运行应用程序时,不会加载资源。我得到以下错误:
加载源为“”的
失败。加载源为“”的
失败。加载源为“”的
失败。加载源为“”的
失败
有人能帮我吗?您必须删除URL中的“wwwroot”部分。“wwwroot”是运行应用程序的根文件夹。现在它将搜索“…wwwroot/wwwroot/js…”中的文件,而不是“…wwwroot/js…”。问题在于路径中没有使用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"
]
}
我无法让这项工作,并了解到,有更多的问题,在目前的时间 默认情况下,dotnet core razor pages项目中没有安装任何捆绑和缩小功能 假设,您可以通过右键单击Visual Studio解决方案资源管理器中的bundleconfig.json来检查设置。但这在我的项目中没有显示任何东西 我终于找到了一个Visual Studio加载项 捆绑机和迷你机--手动 相反,我安装了一个手动bundler&minifier——它是由与上面的Nuget pkg相同的作者(Mads Kristensen)编写的。 这是一个VisualStudio扩展,安装后,您可以右键单击任何css或js文件,您将得到一个菜单,允许您“手动”缩小它们。 在生成时启用捆绑… 该选项将警告您它将安装Nuget软件包。我还没那么做 我还取消选中了该选项[Product Output Files],然后再次选中(选中),当我选中该选项时,在名为bundleconfig.json.bindings的bundleconfig.json下的解决方案中创建了另一个文件。该文件仅包含一行:
produceoutput=true
奇怪的是,它以前不在那里。我知道那个文件以前不存在,因为git告诉我有未跟踪的文件,并提到那个文件
为了测试studio中是否存在问题,我创建了一个全新的dotnet Core 2.x Razor Pages项目,然后立即删除min.css并尝试重新构建它,但它再也无法构建
更新所有捆绑包
在添加了.bindings文件之后,我再次构建了包,但是包仍然没有构建。
然后我注意到在[Buff]菜单下有另外一个选项,但是我不确定这是否是我安装的捆绑和缩小插件,所以在寻找这个解决方案时你必须考虑。
您还可以在Visual Studio[工具…选项…]菜单中检查设置:
您可以看到Bundler&Minifier在我的项目中将产品输出文件选项设置为true(即使它仍然不工作)
实际上,我更仔细地阅读了下面这句话,我注意到它说,“积极地倾听输入文件的更改”,所以我去更改了我的site.css,并注意到site.css中的值确实更新了
做出改变,然后再改变
奇怪的是,如果你删除了你的site.min.css,那么它似乎不会在任何时候重新生成。我想现在如果你这样做了,你可以做一个改变,然后把它改回来,min文件就会被创建
我对此进行了测试:删除site.min.css,然后进行了更改,文件再次生成。奇怪的是,该版本没有启动此功能。根据Microsoft提供的文档 NuGet包支持在构建时执行绑定和缩小
这一点一开始也让我很恼火,因为它不是默认安装的,而且bundler的含义似乎是它应该内置工作。但事实并非如此 安装后VS 2017 Community 2017,版本15.8.9 捆绑和缩小停止工作 在NuGet中安装不起作用 所以,在工具菜单中,扩展和更新,在更新捆绑和缩小,并重新启动VS后,它开始工作
现在,在选择bundleconfig.json后,右键单击弹出菜单中的“Bundler&Minified”项,显示我今天遇到的问题。对我来说,关键是nuget包()不足以让它工作。您还需要安装VS扩展。在此基础上,您可以按照以下步骤在构建时启用绑定。请注意,如果您还没有nuget软件包,那么VS扩展也将安装它 关于为什么这不能开箱即用,我相信这是因为这是一个全新的第三方工具
Install-Package BuildBundlerMinifier -Version 2.8.391