.NET Core 2.2 升级 3.1

简单记录下个人升级3.1过程。

1.修改目标框架

 搜索解决方案--netcoreapp-后面几点几全部改为3.1

在搜索到的文件中,看是否存在这两个-----移除 Microsoft.AspNetCore... 的 PackageReference,因为已经包含在3.1的目标框架内了。

<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />

  

2.升级所依赖的NuGet包

将项目依赖的所有NuGet包更新至最新版本

3.启动更改

Program.cs

未来版本中将弃用 WebHostBuilder,并将其替换为 HostBuilder

原来未修改前代码

HostBuilder 替换 WebHostBuilder

修改后

Host.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((hostingContext, builder) =>
                {
                    builder.SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile(
                        hostingContext.HostingEnvironment.IsProduction()
                            ? "appsettings.Production.json"
                            : "appsettings.Development.json", true, true)
                    .AddApollo(builder.Build().GetSection("apollo"))
                    .AddDefault();

                    ApolloConfig.Configuration = builder.Build();
                })
                .ConfigureServices(builder =>
                {
                    //Console.WriteLine("ConfigureServices");
                })
                .ConfigureLogging(builder =>
                {
                    //Console.WriteLine("ConfigureLogging");
                })
                .ConfigureHostConfiguration(builder =>
                {
                    //Console.WriteLine("ConfigureHostConfiguration");
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    //Console.WriteLine("ConfigureWebHostDefaults");
                    webBuilder.UseUrls("http://*:5101").UseStartup<Startup>().UseNLog();
                });
View Code

 

 Startup.cs

下图显示了应用中已删除和已更改的行:

 

 在上图,标红的是要删除的代码。

 app.UseRouting();

            app.UseAuthorization();

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

 在上图中,添加的代码显示为绿色。

 public void ConfigureServices(IServiceCollection services)
{
        services.AddControllersWithViews();   //控制器+视图=mvc模式
        services.AddControllers();   //单控制器=WebApi
        services.AddRazorPages();   //Razor Pages
}

路由启动方式

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

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

改到这差不多就改完了。然后删除掉项目中的隐藏文件   .vs     .vscore       .idea     然后重启项目,重新生成下解决方案即可。

----------------------------------------------------------------------------------------------------------------------------------------------------------

如果刚好你也用  Nlog 日志 

原写法

loggerFactory.AddNLog();//添加NLog
env.ConfigureNLog("LogConfig/nlog.config");//读取Nlog配置文件 

修改为

loggerFactory.AddNLog();//添加NLog
NLog.Web.NLogBuilder.ConfigureNLog("LogConfig/nlog.config");//读取Nlog配置文件

loggerFactory.AddNLog(); 可能会过时。

需要在 Program 中通过 .UseNLog() 扩展方法进行配置,删除过时的那条代码就可以了。

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>().UseNLog();
                });

又刚好你们返回json是差不多和我一样返回的

 需要在 Startup.cs 添加 Newtonsoft.json

 public void ConfigureServices(IServiceCollection services)
{           
     services.AddMvc().AddNewtonsoftJson(options =>
     {
                //忽略循环引用
                options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
                //不使用驼峰样式的key
                options.SerializerSettings.ContractResolver = new DefaultContractResolver();
      });
 }

ASP.NET Core 的默认 JSON 序列化程序现已 System.Text.Json,这是 .NET Core 3.0 中的新增项。

所以可能会有问题,如没问题请忽略。

注意: 如果该AddNewtonsoftJson方法不可用,请确保已安装AspNetCore包。 常见的错误是安装newtonsoft.json包,而不是AspNetCore NewtonsoftJson包。

从 ASP.NET Core 2.2 迁移到3.0

原文地址:https://www.cnblogs.com/ya-jun/p/12340488.html