NetCore3.1项目升级到Net6.0

本文分享了一次从NetCore3.1迁移到Net6.0的实际经验,包括如何更新项目框架、处理不兼容问题及解决代码异常等关键步骤。

项目框架一直使用的是NetCore3.1,近期一直想升级Net6.0,刚好有空安装了VS2022,趁此机会将项目框架升级到Net6.0,将多余业务代码删除,只保留简单的权限框架结构。

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

所有项目按照此步骤操作一遍,完成后再将所有引用的包(即 *.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hefeng_aspnet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值