当前位置: 首页 > 编程笔记 >

ASP.NET Core 3.0迁移的完美避坑指南

闻人修平
2023-03-14
本文向大家介绍ASP.NET Core 3.0迁移的完美避坑指南,包括了ASP.NET Core 3.0迁移的完美避坑指南的使用技巧和注意事项,需要的朋友参考一下

一.前言

.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

  • 现在我们已经定义了云原生应用程序架构,并简要介绍了企业在采用它们时必须考虑做出的变化,现在是深入研究技术细节的时候了。对每个技术细节的深入讲解已经处处了本报告的范围。本章中仅是对采用云原生应用程序架构后,需要做的特定工作和采用的模式的一系列简短的介绍,文中还给出了一些进一步深入了解这些方法的链接。