一.前言
.NET Core 3.0将会在 .NET Conf 大会上正式发布,截止今日发布了9个预览版,改动也是不少,由于没有持续关注,今天将前面开源的动态WebApi项目迁移到.NET Core 3.0还花了不少时间踩坑,给大家分享一下我在迁移过程中遇到的坑。迁移的版本是当前Release最新版本 .NET Core 2.2 到 .NET Core 3.0 Preview 9。
二.ASP.NET Core 项目迁移
官方迁移文档:从 ASP.NET Core 2.2 迁移到3.0 ,这个官方文档比较详细,但是有一些东西里面并没有写。
1.更改框架版本
将 TargetFramework 版本改为 netcoreapp3.0
2.移除Nuget包
移除所有 Nuget包
将其余 Nuget 包更新到支持 .NET Core 3.0 版本
3.Program更改
public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); }
4.Startup更改
ConfigureServices 方法:
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); 改为 services.AddControllers()(WebApi) / services.AddControllersWithViews();(MVC)
Configure 方法:
1、该方法里获取Host环境信息接口类型,IHostingEnvironment改为 IWebHostEnvironment
2、app.UseMVc 改为:
WebApi:
app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
MVC:
app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); });
关于Json组件
ASP.NET Core 3.0 默认移除了 Newtonsoft.Json ,使用了微软自己实现的 System.Text.Json,如果要改为 Newtonsoft.Json ,那么有以下两步:
1.安装Nuget包:
Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson
2.注册
services.AddControllers().AddNewtonsoftJson();
三.类库(Class Library Net Standard 2.0)项目迁移
因为 ASP.NET Core 3.0 对元包机制的改动,现在不能通过nuget安装 Microsoft.AspNetCore.All 或者 Microsoft.AspNetCore.App 3.0版本,以及他们包含的大多数Nuget包也不能通过nuget安装了(没有3.0对应的版本)。如果说还引用2.2版本的nuget包,那么运行起来可能会出错。元包被包含在了 .NET Core SDK中,这意味着如果我们的类库项目依赖了 AspNetCore 相关组件,那么将没法继续将项目目标框架设置为 .NET Standard 了,只能设置为.NET Core 3.0,因为 ASP.NET Core 3.0 only run on .NET Core 。
元包机制改动原因:https://github.com/aspnet/AspNetCore/issues/3608
1.更改框架版本
2.更新Nuget包
移除 Microsoft.AspNetCore.* 不具有 .NET Core 3.0 的版本,例如:
添加 FrameworkReference(不是 PackageReference) 引用:
三.结束
题外话:ASP.NET Core 直到2.2 是可以同时运行在 .NET Framework 和 .NET Core 中,但是从 ASP.NET Core 3.0 开始,将会只支持 .NET Core。
相关资料:A first look at changes coming in ASP.NET Core 3.0
上面说的改动,微软官方都有解释原因,其实是为了变得更好而改动,弥补以前的缺点,只不过对于用了这么久的Core来说有点折腾,但是还是能接受,为了更好的 .NET Core。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。
RFC 2119 中的必须(MUST),不可(MUST NOT),建议(SHOULD),不建议(SHOULD NOT),可以/可能(MAY)等关键词将在本节用来做一些解释性的描述。 从 1.4 迁移到 2.0 1.4 到 2.0 是一个大版本更新,更新中存在不向下兼容的部分。涉及到类更替,命名空间结构调整,过时类删除等。 事件系统 我们对事件系统进行了重构,对于事件系统的命名发生了变化。 1.x
本文档尝试解释 应该 如何实现你的项目迁移,但是由于整体项目结构始终可能变化,因此,这可能不是一个完整验证过的方法。 使用 vue init simulatedgreg/electron-vue my-project 生成一个崭新的 electron-vue 项目 将当前项目 src 内的文件复制到新项目的 src 目录中 将 package.json 里的依赖关系从当前项目复制到新项目的 pac
Migration Guide 1.3.x to 2.0.x Migration Guide 2.0.x to 2.1.x Migration Guide 2.1.x to 2.2.x Migration Guide 2.2.x to 2.3.x Migration Guide Akka Persistence (experimental) 2.3.3 to 2.3.4 (and 2.4.x) M
迁移指南 本文提供了一套从v4迁移到最新v5版本的指导原则。在开发过程中,我们花了很多时间试图避免任何重大改变。尽管如此,为了简化它的使用,API必须在一堆地方进行更改。此外,以前的版本由于已经做出的决定而受到限制。 模板 为了减少Nest和Angular之间的差异数量,根据@Module()装饰器进行了很少的更改。 模块属性现在已被弃用,改用导入 组件属性现在已被弃用,改为使用提供者 装饰器 @
从Web3 到 ethers v4 Todo: This is coming soon. 从 ethers v3 升级到 ethers v4 A lot of the functionality has remained the same, but there has been some slight refactoring and improved paradigms. 常量变更 All con
现在我们已经定义了云原生应用程序架构,并简要介绍了企业在采用它们时必须考虑做出的变化,现在是深入研究技术细节的时候了。对每个技术细节的深入讲解已经处处了本报告的范围。本章中仅是对采用云原生应用程序架构后,需要做的特定工作和采用的模式的一系列简短的介绍,文中还给出了一些进一步深入了解这些方法的链接。