zoukankan      html  css  js  c++  java
  • .Net Core 3.1迁移整理

    概述

    .NET Core 3.1 中最重要的特性为,它是长期支持 (LTS) 版本。未来三年包含来自 Microsoft 的支持的 LTS 版本。

    作为一个大版本更新,.NET Core 3.0以后引入了大量改进和新特性,新增加了 Windows Forms 和 WPF、新的 JSON API、对 ARM64 架构的支持,以及全面提升的性能。

     

    如果使用的是 Visual Studio 2019,则必须更新到 Visual Studio 2019 版本 16.4 或更高版本才能使用 .NET Core 3.1 项目。 有关 Visual Studio 版本 16.4 中新增功能的详细信息,请参阅 Visual Studio 2019 版本 16.4 中的新增功能

    Visual Studio for Mac 也支持 .NET Core 3.1,并且 Visual Studio for Mac 8.4 中就包括 .NET Core 3.1。

     

    框架/工具

    下载地址:https://dotnet.microsoft.com/download/dotnet-core/3.1

    Visual Studio support

    Visual Studio 2019 (v16.4)以上

    Included in

    Visual Studio 16.4.0

    Included runtimes

    .NET Core Runtime 3.1.0

    ASP.NET Core Runtime 3.1.0

    Desktop Runtime 3.1.0

    Language support

    C# 8.0 https://devblogs.microsoft.com/dotnet/building-c-8-0/

     

    迁移到.Net Core3.1

    迁移方案参看:

    https://docs.microsoft.com/zh-cn/aspnet/core/migration/22-to-30?view=aspnetcore-3.1&tabs=visual-studio

    https://docs.microsoft.com/zh-cn/aspnet/core/migration/30-to-31?view=aspnetcore-3.1&tabs=visual-studio

     

    1、将vs2019更新到16.4.x,会自动安装3.1的sdk。

    2、将项目框架升级到3.1,修改csproj文件。

    <PropertyGroup>
      <TargetFramework>netcoreapp3.1</TargetFramework>
    </PropertyGroup>

    3、web项目中Program.cs文件,WebHost 改为 Host,通过ConfigureWebHostDefaults配置主机。

    public static IHostBuilder CreateWebHostBuilder(string[] args)
            {
                //获取当前dotnet 命令运行应用程序的的所在目录
                var configuration = new ConfigurationBuilder().SetBasePath(Environment.CurrentDirectory).AddJsonFile("hostsettings.json").Build();
                return Host.CreateDefaultBuilder(args)
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                        webBuilder.UseUrls(configuration["ApplicationUrl"]);
                    });
            }

    4、web项目中Startup.cs

    ConfigureServices 方法中 services.AddMvc() 改为 services.AddControllersWithViews(),对参数 ModelBinderProviders 更改放到 AddMvcOptions 中。

    添加 Microsoft.AspNetCore.Mvc.NewtonsoftJson 的引用 有一点需要特别注意, .Net Core 3.0 已经从共享框架中删除了 Newtonsoft.Json,并引入新的 System.Text.Json 类库。

    依赖了 Newtonsoft.Json 的项目,需要引入 Microsoft.AspNetCore.Mvc.NewtonsoftJson,这个引用会自动包含 Newtonsoft.Json 库。添加 AddNewtonsoftJson 用来使用老的 Newtonsoft.Json 来序列化 JSON 数据。

    //services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    services.AddControllersWithViews().AddMvcOptions(option =>
    {
         //全局异常捕获
         option.Filters.Add<GlobalExceptionFilter>();
    }).AddNewtonsoftJson();//添加 AddNewtonsoftJson 用来使用老的 Newtonsoft.Json 来序列化 JSON 数据。

    Configure 方法中 app.UseMvc() 改为 app.UseRouting() 与 app.UseEndpoints(),IHostingEnvironment改为IWebHostEnvironment,IApplicationLifetime改为IHostApplicationLifetime

    (命名空间:Microsoft.Extensions.Hosting)

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime appLifetime)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
        }
        app.UseStaticFiles();
        app.UseAuthorization();
    
        app.UseRouting();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
            //endpoints.MapRazorPages();对于支持 Razor Pages 的项目修改
        });
    }

    5、从 Web 项目中移除 Microsoft.AspNetCore...的 PackageReference,因为已经包含在3.1的目标框架内了。

    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.0" PrivateAssets="All" />

    6,更新所有(相关)nuget包,升级nuget中2.x的所有.net core相关引用包。

     

     

  • 相关阅读:
    广陵基地输电线路实训场
    广陵基地配电网综合实训室
    广陵基地电缆实训室
    Windows Phone 9再见了!
    Windows Phone 8初学者开发—第23部分:测试并向应用商店提交
    Windows Phone 8初学者开发—第22部分:用演示图板创建卷盘的动画
    JDBC数据类型
    Java-BlockingQueue的使用
    苹果下如果安装nginx,给nginx安装markdown第三方插件
    苹果电脑包管理
  • 原文地址:https://www.cnblogs.com/yangyuping/p/12875881.html
Copyright © 2011-2022 走看看