.NET Core 3.0及ASP.NET Core 3.0 前瞻

ASP.NET Core 3.0 迁移避坑指南

将 ASP.NET Core 2.2 迁移至 ASP.NET Core 3.0 需要注意的地方记录在这篇随笔中。

TargetFramework 改为 netcoreapp3.0

<TargetFramework>netcoreapp3.0</TargetFramework>

从 Web 项目(Microsoft.NET.Sdk.Web)中移除 Microsoft.AspNetCore.App 的 PackageReference

<PackageReference Include="Microsoft.AspNetCore.App" />

对于类库项目,如果有对 Microsoft.AspNetCore.App 的 PackageReference 引用,需要改为 FrameworkReference

<ItemGroup><FrameworkReference Include="Microsoft.AspNetCore.App" /></ItemGroup>

或者将 Microsoft.NET.Sdk 改为 Microsoft.NET.Sdk.Web ,将 OutputType 设置为 Library ,详见博问

<Project Sdk="Microsoft.NET.Sdk.Web"><PropertyGroup><TargetFramework>netcoreapp3.0</TargetFramework><OutputType>Library</OutputType></PropertyGroup></Project>

Program 中 WebHost 改为 Host (注:使用 Host 有个小坑,详见 博问)

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>();            });}

如果不使用 Razor Pages ,在 Startup.ConfigureServices 中将 services.AddMvc() 改为

services.AddControllers();

Startup 中 app.UseMvc() 改为 app.UseRouting() 与 app.UseEndpoints()

app.UseRouting();app.UseEndpoints(endpoints =>{    endpoints.MapControllerRoute(        name: "default",        pattern: "{controller=Home}/{action=Index}/{id?}");});

.NET Core 3.0 SDK 的 docker 镜像

mcr.microsoft.com/dotnet/core/sdk:3.0

ASP.NET Core 3.0 runtime 的 docker 镜像

mcr.microsoft.com/dotnet/core/aspnet:3.0

Web API 响应的 json 数据中文被编码的问题(详见博问)

services.AddMvc().AddNewtonsoftJson();

对于 Razor Class Library 项目 .csproj 配置

<Project Sdk="Microsoft.NET.Sdk.Razor"><PropertyGroup><TargetFramework>netcoreapp3.0</TargetFramework><AddRazorSupportForMvc>true</AddRazorSupportForMvc></PropertyGroup><ItemGroup><FrameworkReference Include="Microsoft.AspNetCore.App" /></ItemGroup></Project>

EF Core 3.0 配置一对一关系(生成 INNER JOIN SQL 语句)

builder.HasOne(p => p.ViewCount)    .WithOne()    .IsRequired()    .HasPrincipalKey<ViewCount>(vc => vc.PostId); 

EF Core 3.0 OwnsOne 关系配置注意

builder.OwnsOne(b => b.ScoreRank, sr =>{    sr.ToTable("ScoreRank");    sr.HasKey(x => x.BlogId);//EF Core 3.0 所需    sr.WithOwner().HasForeignKey(x => x.BlogId);});

EF Plus(Z.EntityFramework.Plus.EFCore) 不支持 .NET Core 3.0 ,详见博问

EFCore.BulkExtensions 也不支持 .NET Core 3.0 ,但只需修改它的1行代码就可以支持,详见博问

如果数据库服务器用的是 SQL Server 2008 ,并且用的是 docker 容器部署,需要修改 openssl 的配置,详见博问

【相关链接】

Breaking changes to Microsoft.AspNetCore.App in 3.0

原文链接:https://www.cnblogs.com/dudu/p/10776880.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

ASP.NET Core 2.2 项目升级至 3.0 备忘录相关推荐

  1. asp.net core 1.1 项目升级至 asp.net core 2.0 preview 2

    这两天把一个 asp.net core 1.1 的项目迁移到了 asp.net core 2.0 preview 2 ,在这篇随笔中记录一下. 如果项目在有 global.json 文件,需要删除或修 ...

  2. core webapi缩略图_在ASP.NET Core Web API 项目里无法访问(wwwroot)下的文件

    新建 ASP.NET Core Web API 项目 -- RESTFul 风格 Hello World! 一.创建一个空项目 请查看 新建 .NET Core 项目 -- Hello World!  ...

  3. asp.net core 从 3.1 到 5.0

    asp.net core 从 3.1 到 5.0 Intro 就在前几天,微软宣布了 .NET5 发布了 RC1 版本,这也意味着 .NET5 的开发基本稳定了,正式发布之前,不会再新增新的 Feat ...

  4. IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API

    IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...

  5. ASP.NET Core 介绍和项目解读

    1. 前言 2. ASP.NET Core 简介 2.1 什么是ASP.NET Core 2.2 ASP.NET Core的特点 2.3 ASP.NET Core 项目文件夹解读 2.3.1 项目文件 ...

  6. Asp.NET Core 轻松学-项目目录和文件作用介绍

    前言     上一章介绍了 Asp.Net Core 的前世今生,并创建了一个控制台项目编译并运行成功,本章的内容介绍 .NETCore 的各种常用命令.Asp.Net Core MVC 项目文件目录 ...

  7. [译]使用LazZiya.ExpressLocalization开发多语言支持的ASP.NET Core 2.x项目

    介绍 开发多语言支持的ASP.NET Core 2.x Web应用程序需要大量的基础架构设置,并且耗费时间和精力.这篇文章,我们将使用LazZiya.ExpressLocalization nuget ...

  8. ASP.NET Core 开源论坛项目 NETCoreBBS

    ASP.NET Core 轻量化开源论坛项目,ASP.NET Core Light forum NETCoreBBS 采用 ASP.NET Core + EF Core Sqlite + Bootst ...

  9. 使用LazZiya.ExpressLocalization开发多语言ASP.NET Core 2.x项目

    目录 介绍 背景 创建项目 安装LazZiya.ExpressLocalization 创建本地化资源 使用代码 添加语言导航 本地化视图 本地化URL 本地化标识(Identity)视图 本地化数据 ...

最新文章

  1. 如何保证世界杯直播不卡顿?腾讯云要用AI解决这个问题
  2. 经过研究发现。c++里面的const意思是说,我是const,成员也是const!!!
  3. Eclipse工程标准目录层次结构
  4. Java 设计模式之单例模式
  5. 桌面时钟代码_iOS 14 制作自己的桌面 Widget
  6. 查找前端依赖 jquery css js 时间控件 不要用远程依赖 会变化的 card
  7. scrapy安装_爬虫框架Scrapy简介与安装
  8. 计算机学科技术前沿:第31次中国互联网络发展状况统计报告
  9. CKeditor4.7.3标准版图片上传及相关配置
  10. 1.7更换JDK1.6版本后,无法启动eclipse mars解决办法。
  11. 铁路售票系统_城轨交通自动售检票(AFC)实训系统中心_地高铁车站票务实训如何建设...
  12. phpcms v9模板制作教程
  13. 遗传算法实践详解(deap框架初体验)
  14. 2010年及以前的微博
  15. 一条wmic命令解决硬盘序列号和mac地址查询
  16. Python判断一个正整数是否为素数的算法
  17. 如何读取环境变量值?Go 每日一库之 godotenv
  18. JSP学生考勤管理系统考勤管理系统jsp学生迟到早退考勤查询系统(考勤管理系统源码)
  19. 麦当劳“制服黑丝”,火了!
  20. 网关和代理服务器的异同

热门文章

  1. 转载 一篇UI规范文件
  2. 北京一公交车发生爆炸 疑为乘客携带药品起反应
  3. geek_Ask How-To Geek:营救受感染的PC,安装无膨胀iTunes和驯服疯狂的触控板
  4. 在c语言中load,一道题理清Objective-C中的load和initialize
  5. 在数据库插入带小数点数据的问题
  6. EntityFramework用法探索(三)CodeFirst流畅API
  7. 存储世界瞬息万变 SSD掀行业浪潮
  8. “爱思助手”曝为iOS木马:可绕过苹果DRM机制
  9. 基本线程同步(三)在同步的类里安排独立属性
  10. Android延时执行调用的几种方法