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相关引用包。

     

     

  • 相关阅读:
    HDU3145 Max Sum of Max-K-sub-sequence (单调队列模板)
    AcWing1088 旅行问题(单调队列)
    POJ1821 Fence(单调队列)
    POJ1742 Coins(多重背包+二进制优化)
    AcWing217 绿豆蛙的归宿(期望)
    BZOJ.2134.[国家集训队]单选错位(概率 递推)
    洛谷.3805.[模板]manacher算法
    Codeforces.280C.Game on Tree(期望)
    BZOJ.2521.[SHOI2010]最小生成树(最小割ISAP/Dinic)
    洛谷.4172.[WC2006]水管局长(LCT Kruskal)
  • 原文地址:https://www.cnblogs.com/yangyuping/p/12875881.html
Copyright © 2011-2022 走看看