专栏首页寒树Office与RPA这些关键设置没搞好,胡乱升级.NET5的 后果自负!

这些关键设置没搞好,胡乱升级.NET5的 后果自负!

11月11号是电商狂欢的日子,也是.NET5正式发布的日子,焦急地刷新着微软官网等更新,想第一时间开始折腾。此前Scott Hunter在博客信誓旦旦:.NET Core3.1平滑迁移.NET5,于是当天就去升级了本人的宝藏项目,结果是大坑没有,小坑不断,折腾了一天时间才搞定,下面来仔细捋一捋,给搭建提供点参考。

背景介绍

升级的项目是之前开源在Github上,也曾一周新增300star,后面虽因故关闭了,也算是非常用心的。这不.NET5刚发布,第一时间就开始了升级。

项目是个微信小程序商城,后端是微服务架构支撑的,Ocelot网关+Consul服务注册发现+Core WebApi+gRPC+IdentityServer4都安排上了,整体还是比较复杂的,MongoDB、Redis、RabbitMQ也都安排上了,然后就在.NET Core3.1升级.NET5的过程中,各种踩坑。

VS升级坑

升级的第一个坑来自于VS工具升级!之前.NET5预览版、RC1、RC2都是用的Visual Studio 2019 Preview,这会儿.NET5正式版发现只需要把Visual Studio 2019升级到V16.8即可,然后就兴冲冲的升级去了,结果当头一棒:Visual Studio Installer提示网络未连接无法下载!当然不是网络问题,其实是DNS解析上出了毛病(部分用户会遇到,解决办法是把电脑的DNS设置为8.8.8.8即可),但毕竟当时是11号凌晨,以为是微软官方同步不够,在选择换工具,直接去Linux下用VS Code升级了,于是就有了下面的第二波环境坑!

经验:如果遇到Visual Studio Installer提示网络未连接无法下载,可以将当前电脑DNS设置为8.8.8.8即可

Linux环境坑

Linux环境下VS Code开发之前都蛮熟悉了,这次想着是升级.NET5,就顺手把Linux系统从CentOS7给换成了CentOS8,然后又华丽丽的各种坑。比如CentOS8中网卡名字从ens33变成了eth0,用nftables替代iptables,各种小变化让人防不胜防,然后docker最新版本的命令也跟之前有些小变化,导致之前整理的Linux+Docker操作笔记各种失灵,来来回回折腾了好几个小时。

当然,环境只是环境,折腾完就过去了,而代码迁移层面的坑才是最麻烦的,因为并不知道还有多少没发现!

.NET5迁移坑坑坑

项目从.NET Core3.1升级到.NET5非常easy,在 global.json 中将SDK版本从3.1升级成5.0,再将TargetFramework从netcoreapp3.1换成net5.0即可。还有部分类库命名空间变化完全没关系,宇宙第一IDE的智能提示轻松解决。但是,在真实项目迁移过程中,我却遇到了各种小问题:

1

Core WebApi框架模板项目中默认集成了swagger,这个是新增的,但之前项目有一些自定义配置和扩展,也导致了冲突。

2

IdentityServer4第三方框架版本升级,API变化很有点多,改动不了不少代码,这个锅虽然不是.NET5的,但也是升级项目会遇到的。

3

尝试C#9花了一些时间,想体验下新语法新特性,如Native ints原生Ints、Pattern matching improvements模式匹配改进版,结果几次把自己绕进去了。

4

项目升级完发现的Bug,DateTime这个天天见的值出现了变化,在 ASP.NET Core 3.1 及更早版本中,DateTime绑定的是服务器本地时间,而5.0之后,DateTime绑定的是UTCTime。

本文分享自微信公众号 - 寒树Office与RPA(OfficeRPA)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-11-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Script Lab 10:为Officejs开发配置VSCode环境

    Script Lab 初级程教程己经靠一段落,前后共了9篇,作为 OfficeJS 开发入门己经缀缀有余。假设你使用Script Lab 创建了一个加载项的片段...

    寒树Office与RPA
  • Script Lab 07:引入控件,Excel 基础操作(5)

    本教程己经到了 Excel 示例的收尾阶段,掌握前期的内容,基本上可以完成一个 Excel Web add-in 插件了,但如果能够引入一些常用的控件库,能达到...

    寒树Office与RPA
  • 为什么我要推荐你使用Core WebApi?

    2020年了,放眼望去,单体架构已经渐行渐远,分布式架构大行其道,微服务更是如火如荼。作为分布式实施的基础,跨进程通信的技术也是五花八门,为什么Core Web...

    寒树Office与RPA
  • muleESB简介和安装(一)

    在开始学习muleESB之前,我们先看什么是mule和什么是ESB。可以帮助我们深入的学习和理解。

    程序猿小亮
  • GCAC02 2.4.1

    The goal of this section is to provide precise mathematical definitions for thes...

    安包
  • 使用python-Jenkins批量创建及修改jobs操作

    2.使用Jenkins创建job时自动生成的config.xml文件为模板进行批量创建jobs或修改jobs,一般生成的job会在你安装的Jenkins目录下找...

    砸漏
  • 微软人工智能首席科学家邓力:口语对话系统的分类及三代演变

    编者按:邓力博士原为加拿大滑铁卢大学教授,1999 年加入微软,2016 年起担任微软首席人工智能科学家,负责微软深度学习技术中心应用趋向的深度学习研究。 在上...

    AI科技评论
  • 如何在Ubuntu 18.04上安装带有LEMP的WordPress

    WordPress是互联网上最受欢迎的CMS(内容管理系统)。它允许您使用PHP处理在MySQL后端之上轻松设置博客和网站。WordPress已经看到了令人难以...

    所有的酒都不如你
  • ceph升级总结 原

    从hammer0.94.9升级到Jewel10.2.9,升级跨度很大,另外老集群的数据量很大(320TB),整个集群升级总时间耗费大约2个半小时的操作时间,数据...

    domain0
  • kubenetes1.13.1 部署coredns

    在官网下载https://github.com/coredns/deployment/tree/master/kubernetes 配置文件主要是deploy....

    三杯水Plus

扫码关注云+社区

领取腾讯云代金券