> 文章列表 > NetCore3.1或Net6.0项目升级到Net7.0

NetCore3.1或Net6.0项目升级到Net7.0

NetCore3.1或Net6.0项目升级到Net7.0

其实与我之前发布的步骤基本一致,升级到net6.0之后,在升级net7.0基本没有可修改的代码,只是升级一些nuget包而已,NetCore3.1升级到Net6.0,可参考此文章:NetCore3.1项目升级到Net6.0_csdn_aspnet的博客-CSDN博客

开始升级,使用VS2022打开项目,将项目都升级到Net7.0,如下图: 

 所有项目按照此步骤操作一遍,完成后再将所有引用的包(即 *.dll)更新升级到最新版(注意:有些dll升级不兼容,可不选择升级),还是项目右键,如下图:

界面如下:

选择所有包之后会出现更新按钮:

我这里有个别包未选择更新,因为有个别包升级后可能有不兼容的或者某些属性方法变更了,导致编译失败,方法或属性找不到,如果不小心升级了,先卸载对应包,再选择对应版本的包安装即可。  

按照上面包更新方法所有项目执行一遍即可,然后开始编译代码:

 至此,代码升级完成了,生成成功。如果编译过程中中出现某些提示已过时的,但是不影响使用,如:Program.cs文件

我这里为了保持Startup不更改,将此初始化代码做了更改,开始改完是有异常的:

ConfigureWebHost() is not supported by WebApplicationBuilder.Host. Use the WebApplication returned by WebApplicationBuilder.Build() instead.”

经过一番查找学习之后,Net6.0之后没有Startup类了,并且WebApplicationBuilder builder = WebApplication.CreateBuilder(args); WebApplicationBuilder 并不支持 ConfigureWebHostDefaults方法了,修改后的代码如下:

public class Program{public static void Main(string[] args){WebApplicationBuilder builder = WebApplication.CreateBuilder(args);builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());var startup = new Startup(builder.Configuration);startup.ConfigureServices(builder.Services);builder.Host.UseSerilog((context, logger) =>//注册Serilog{logger.ReadFrom.Configuration(context.Configuration);logger.Enrich.FromLogContext();});builder.WebHost.UseKestrel(so =>{//so.Limits.MaxConcurrentConnections = 100;//so.Limits.MaxConcurrentUpgradedConnections = 100;so.Limits.MaxRequestBodySize = 1024 * 1024 * 600;});builder.Host.ConfigureContainer<ContainerBuilder>(builder =>{startup.ConfigureContainer(builder);});var app = builder.Build();startup.Configure(app, builder.Environment);app.Run();}}

开始没执行此代码startup.ConfigureContainer(builder);方法,结果报服务方法没有注入的异常,Autofac注册Service和注册Repository在Startup中的方法:

public void ConfigureContainer(ContainerBuilder builder){builder.RegisterModule(new AutofacModuleRegister());}

至此,代码升级完成了,运行调用接口均没有问题。

补充:严重性 代码 说明 项目 文件 行 禁止显示状态
错误 CS1061 “IMvcBuilder”未包含“AddNewtonsoftJson”的定义,并且找不到可接受第一个“IMvcBuilder”类型参数的可访问扩展方法“AddNewtonsoftJson”(是否缺少 using 指令或程序集引用?)

解决方法是安装下面的nuget包  即可

Microsoft.AspNetCore.Mvc.NewtonsoftJson