zoukankan      html  css  js  c++  java
  • .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

  • 相关阅读:
    吴裕雄--天生自然ANDROID开发学习:1.9 Android程序签名打包
    吴裕雄--天生自然ANDROID开发学习:1.8 工程相关解析(各种文件,资源访问)
    html 上传预览图片
    git笔记
    iscroll 下拉刷新功能
    移动端页面 弹出框滚动,底部body锁定,不滚动 / 微信网页禁止回弹效果
    getElementsByClassName 兼容性
    登录页面-输入框清空按钮
    FireFox中iframe的返回上页问题
    ajax是异步的,异步取数据,如何能保证数据是存在的。
  • 原文地址:https://www.cnblogs.com/ya-jun/p/12340488.html
Copyright © 2011-2022 走看看