浅谈从ASP.NET Core2.2到3.0你可能会遇到这些问题
趁着假期的时间所以想重新学习下微软的官方文档来巩固下基础知识。我们都知道微软目前已经发布了.NET Core3.0的第三个预览版,我家里的电脑也安装了vs2019。So,就用vs2019+.NET Core3.0来跟着做一下Contoso University这个WEB应用,在基于3.0进行操作的时候遇到了一些问题,所以我就查看了微软的《从 ASP.NET Core 迁移 2.2 到 3.0 预览版 2》这篇文档,就着今天遇到的问题,所以我整理下,希望对大伙有所帮助,大伙也可以直接阅读微软的官方文档进行查看。我在阅读官方说明的时候,总感觉翻译的不是很准确,读起来很拗口,所以这里我是自己的理解对官方文档的一个补充。
我遇到的问题
ASP.NET Core2.0时代,若要为项目添加 EF Core 支持,需要安装相应的数据库驱动包。 教程中使用 SQL Server,相关驱动包Microsoft.EntityFrameworkCore.SqlServer。 此包包含在 Microsoft.AspNetCore.App 元包中,,如果应用具有对 Microsoft.AspNetCore.App 包的包引用,则无需引用该包。而2.0中的模板项目会自动为我们加载Mcrosoft.AspNetCore.App这个包的。3.0中没有了这个Mcrosoft.AspNetCore.App这个包,模块化的更彻底了!所需要的EF相关的包需要你自己来进行引用。
2.0升3.0升级指南
就着今天遇到的问题,所以我整理下ASP.NET Core从2.0升级3.0的一个升级指南,希望对大伙有所帮助,大伙也可以直接阅读微软的官方文档进行查看。我在阅读官方说明的时候,总感觉翻译的不是很准确,读起来很拗口,所以这里我是自己的理解对官方文档的一个补充。
更新项目文件
设置TargetFramework到coreapp3.0:
<TargetFramework>coreapp3.0</TargetFramework>
删除Microsoft.AspNetCore.All或Microsoft.AspNetCore.App元包的任何<PackageReference>。
将<PackageReference>元素中剩余的Microsoft.AspNetCore.程序包更新到当前的预览版中 (例如,3.0.0-preview3.19128.7)。
如果没有对应的 3.0 版本的包,则说明包可能会在 3.0 中弃用。 其中许多之前都属于Microsoft.AspNetCore.App并且不需要单独引用的包,如上面我遇到的问题,关于SQL Server的EF相关的包。 具体的不再在 3.0 中生成的包的列表,请参阅
某些程序集已从2.x和3.0之间的Microsoft.aspcore.app中删除。如果您正在使用asp/AspNetCore #3755中列出的包中的API,则可能需要单独添加到。
例如,Microsoft.EntityFrameworkCore和System.Data.SqlClient不再属于Microsoft.AspNetCore.App得一部分。 Microsoft.aspcore.app中的程序集列表尚未定稿,将在3.0 RTM之前更改。
添加Json.NET 支持。
项目默认为 ASP.NET Core 3.0 或更高版本设置为进程内承载模型。 ,如果其值为InProcess您还可以通过删除<AspNetCoreHostingModel>元素,来进行修改。
作为提高 共享的框架工作的一部分,已从 ASP.NET Core 共享框架中删除。
若要在 ASP.NET Core 3.0 项目中使用 Json.NET:
添加到包引用
更新ConfigureServices调用AddNewtonsoftJson()。
services.AddMvc() .AddNewtonsoftJson();
Newtonsoft 的个性化设置可以设置为AddNewtonsoftJson:
services.AddMvc() .AddNewtonsoftJson(options => options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver());
HostBuilder 替换 WebHostBuilder
使用 ASP.NET Core 3.0 模板。 早期版本使用Web 主机。 狼蚁网站SEO优化的代码显示了生成 ASP.NET Core 3.0 模板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>(); }); }
狼蚁网站SEO优化的代码演示模板生成 ASP.NET Core 2.2Program类
public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>(); }
IWebHostBuilder 将保留在 3.0,是一种webBuilder上面的代码示例所示。 WebHostBuilder 将在未来版本中弃用并替换为HostBuilder。
从WebHostBuilder到HostBuilder最显著的变化是依赖关系注入 (DI)。 使用时HostBuilder,只能将并注入到Startup的构造函数中。 HostBuilder DI 约束
- 使DI容器只能构建一次。
- 避免产生的对象生存期问题,例如解决多个单例实例。
更新 SignalR 代码
如果您调用AddJsonProtocol,将其替换为AddNewtonsoftJsonProtocol。
以下示例显示更改前后的服务器代码
services.AddSignalR(...) .AddJsonProtocol(...) // 2.2
services.AddSignalR(...) .AddNewtonsoftJsonProtocol(...) // 3.0
以下示例显示更改前后的.NET客户端代码
connection = new HubConnectionBuilder() .WithUrl(...) .AddJsonProtocol(...) // 2.2 .Build()
connection = new HubConnectionBuilder() .WithUrl(...) .AddNewtonsoftJsonProtocol(...) // 3.0 .Build()
选择启用运行时编译
在 3.0 中,运行时编译是可选的方案。 若要启用运行时编译,请参阅
感觉微软在努力实现ASP.NET Core的模块化,减小各种依赖,让包变得更小。ASP.NET Core也已经很完善了,大伙是时候用起来ASP.NET Core了。需要说明的一点是,大伙如果是为了体验ASP.NET Core3.0的话,现在就可以,如果是用在生产环境的话最好还是等待正式版的发布吧。
以上所述是长沙网络推广给大家介绍的ASP.NET Core2.2到3.0可能会遇到的问题详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,长沙网络推广会及时回复大家的。在此也非常感谢大家对狼蚁SEO网站的支持!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程