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

 更新时间:2019年09月10日 15:54:01   作者:晓晨Master   我要评论
这篇文章主要给大家介绍了关于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。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • ASP.NET比较常用的26个性能优化技巧

    ASP.NET比较常用的26个性能优化技巧

    这篇文章主要给大家介绍asp.net中比较常用的26个性能优化技巧,主要设计到asp.net中常用的26个性能优化方面的内容,对于asp.net中常用的26个性能优化技巧感兴趣的朋友可以参考下本篇文章
    2015-10-10
  • asp.net url重写浅谈

    asp.net url重写浅谈

    最近小项目要求重写url找了下资料用到了MS的2个dll,微软的例子写得太不明显了。后来终于改好了。
    2009-10-10
  • asp.net异步获取datatable并显示的实现方法

    asp.net异步获取datatable并显示的实现方法

    这篇文章主要介绍了asp.net异步获取datatable并显示的实现方法,结合实例形式分析了asp.net一步操作datatable的相关技巧,需要的朋友可以参考下
    2016-03-03
  • 19个必须知道的Visual Studio快捷键

    19个必须知道的Visual Studio快捷键

    这篇文章主要为大家详细介绍了19个必须知道的Visual Studio快捷键,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 让VS2008对JQuery语法的智能感知更完美一点

    让VS2008对JQuery语法的智能感知更完美一点

    上周Rich Strahl的POST中提到一个新发布的VS2008 hotfix修复了VS2008对Javascript智能感知的一些BUG,fixed之后可以让VS2008对JQuery提供智能感知,让我等JQuery fans欣喜了一阵子。可仔细一看,还需要另外给JQuery添加上XML comments才行 :( 丧气了...  
    2008-03-03
  • GridView高效分页和搜索功能的实现代码

    GridView高效分页和搜索功能的实现代码

    GridView高效分页和搜索功能的实现代码,需要的朋友可以参考一下
    2013-03-03
  • asp.net下经典数据库记录分页代码

    asp.net下经典数据库记录分页代码

    asp.net下经典数据库记录分页代码...
    2007-04-04
  • asp.net实现的计算网页下载速度的代码

    asp.net实现的计算网页下载速度的代码

    刚看到有人给出asp.net实现的计算网页下载速度的方法,本方法未经本人测试,不知道能否可靠性如何。准确来说,这只是个思路吧
    2013-03-03
  • asp.net Linq TO Sql 分页方法

    asp.net Linq TO Sql 分页方法

    临近春节,手头工作已告一段落,闲来无事写了一个 linq to sql 分页方法。代码若有不妥之处,请各位高手多提宝贵意见。
    2010-02-02
  • ASP.NET编程获取网站根目录方法小结

    ASP.NET编程获取网站根目录方法小结

    这篇文章主要介绍了ASP.NET编程获取网站根目录方法,较为详细的分析了ASP.NET针对网站目录及物理路径的操作技巧,并给出了实例予以总结,需要的朋友可以参考下
    2015-11-11

最新评论