注:ASP.NET Core项目模板默认添加该中间件。
对于静态资源的管理ASP.NET Core通过bundleconfig.json配置文件进行配置取代了原先的BundleConfig类型。把原先的资源文件复制到ASP.NET Core的wwwroot目录下,然后在bundleconfig.json文件下进行配置,如下图(部分):
完成配置后还需要在项目中添加一个BuildBundlerMinifier的组件:
引入BuildBundlerMinifier后编译项目就会触发资源绑定和最小化操作:
注:和ASP.NET不同,Core里面的静态资源管理是在编译过程中处理的,并且通过一个json配置文件完成处理定义,除了BuildBundlerMinifier外还可以使用Gulp等工具完成资源的优化,关于Gulp的使用可参考:
完成静态资源迁移后因为Bundle机制的改变还需要对View中资源引用进行修改(ASP.NET Core中不再提供@Scripts和@Styles类型来渲染样式和脚本引用):
运行结果:
小结
.Net Core是一个新的开发框架,2.0版本的.Net Core已经相对完善,本文介绍了一个简单的ASP.NET MVC迁移至.Net Core的例子,从例子中可以看出新的开发平台已经实现了原有的所有功能和解决方案,甚至在原有基础上进行了改进。另外.Net Core作为新框架它是开源的并且相对于.Net Framework来说它的文档更全面(中文文档相对落后),所以.Net Core更容易学习和使用。
对于迁移来说,首先还是看需求和目的,为什么要进行迁移?为了容器化?跨平台部署?在真实项目中迁移一个项目是非常复杂且具有风险的,所以如果要进行迁移需要慎重考虑,考虑迁移是否是最好的解决方案。
参考:
https://docs.microsoft.com/en-us/dotnet/core/tools/project-json-to-csproj
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options?view=aspnetcore-2.1
https://docs.microsoft.com/en-us/aspnet/core/client-side/bundling-and-minification?view=aspnetcore-2.1&tabs=visual-studio%2Caspnetcore2x
https://stackoverflow.com/questions/34306891/restrict-route-to-controller-namespace-in-asp-net-core