一.前言

.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 方法:

  1. 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.注册

三.类库(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。

ASP.NET Core 3.0 迁移避坑指南相关推荐

  1. HarmonyOS实战 —基于hi3861芯片鸿蒙2.0的避坑指南

    HarmonyOS实战 -基于hi3861芯片鸿蒙2.0的避坑指南 特别说明:本文章与卡片开发无关,想看卡片开发的不用往下读了 最近学习鸿蒙设备开发的过程中遇到了很多问题,因为目前几乎所有设备开发教程 ...

  2. 为什么你需要将代码迁移到ASP.NET Core 2.0?

    随着 .NET Core 2.0 的发布,.NET 开源跨平台迎来了新的时代.开发者们可以选择使用命令行.个人喜好的文本编辑器.Visual Studio 2017 15.3 和 Visual Stu ...

  3. ASP.NET Core 2.0 : 三. 项目结构

    ASP.NET Core 2.0 : 三. 项目结构 原文:ASP.NET Core 2.0 : 三. 项目结构 本章我们一起来对比着ASP.NET Framework版本看一下ASP.NET Cor ...

  4. 从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置

    第一部分: https://www.cnblogs.com/frank0812/p/11165940.html 第二部分:https://www.cnblogs.com/frank0812/p/111 ...

  5. ASP.NET Core 5.0新增功能摘要

    .NET5.0发布了大半个月,从.NET Core3.1的平滑迁移体验令人心旷神怡,改个targetframework就完成迁移,不要太轻松!然而,ASP.NET Core5.0也有很多有意思的改变, ...

  6. 避免在 ASP.NET Core 3.0 中为启动类注入服务

    本篇是如何升级到ASP.NET Core 3.0系列文章的第二篇. Part 1 - 将.NET Standard 2.0 类库转换为.NET Core 3.0 类库 Part 2 - IHostin ...

  7. asp.net core 3.0 中使用 swagger

    asp.net core 3.0 中使用 swagger Intro 上次更新了 asp.net core 3.0 简单的记录了一下 swagger 的使用,那个项目的 api 比较简单,都是匿名接口 ...

  8. asp.net core 3.0 更新简记

    asp.net core 3.0 更新简记 Intro 最近把活动室预约项目从 asp.net core 2.2 更新到了 asp.net core 3.0,记录一下,升级踩过的坑以及经验总结,包括但 ...

  9. [翻译] ASP.NET Core 3.0 的新增功能

    全文翻译自微软官方文档英文版 What's new in ASP.NET Core 3.0 本文重点介绍了 ASP.NET Core 3.0 中最重要的更改,并提供相关文档的连接. Blazor Bl ...

最新文章

  1. python django 是啥_python的django做什么的
  2. 关于PE可执行文件的修改
  3. js获取图片真实尺寸 - 代码篇
  4. leetcode - 98. 验证二叉搜索树
  5. 【Python】Python3.7.3 - Python命令行参数详解
  6. Oracle不打算修复这两个iPlanet信息泄漏和注入漏洞
  7. python接口自动化测试二十六:使用pymysql模块链接数据库
  8. 蓝桥基础练习 杨辉三角形 JAVA
  9. 最全电商分类信息(08)
  10. 系统名称:联想ThinkpadOEM Win7SP1简体中文旗舰版原版光盘镜像64位
  11. 2022考研笔记-政治(思修)
  12. bof - pwnable
  13. 《MacTalk 跨越边界》一一1.2 人生如摆摊
  14. 万科副总裁毛大庆在建策沙龙上关于楼市走向的发言
  15. 爱情没有了,生活仍在继续
  16. 视频号带货优势有哪些?普通人为什么要做视频号:国仁楠哥
  17. 将.npy文件转化为灰度图像
  18. 台服天堂2更新服务器无响应,天堂2台服被限制怎么回事?该怎么解决?
  19. 如何锻炼自己的口才?
  20. 数字化转型,你也可以品

热门文章

  1. imdb文件_如何停止IMDB应用程序向您发送通知
  2. 如何在WhatsApp中将群聊静音
  3. 面向对象进阶(二)----------类的内置方法
  4. 实践App内存优化:如何有序地做内存分析与优化
  5. 免去架构算法调优,如何让你的系统风驰电掣?|图说
  6. instancing render
  7. postgresql 查看page, index, tuple 详细信息
  8. C# 文件操作详解(一)---------File类
  9. Disable anchor tag的javascript代码(兼容IE和Firefox)
  10. C# Barrier类