将Teams app升级到net6

net6 发布已经有一个多月了,因为我的LuckyDraw app是使用Azure app service,当时我查了一下app service还没有ready,昨天我又查看了一下,发现app service已经默认装了net6。

net6

那就是时候升级我的LuckyDraw了,如果大家的app也是用c#来开发的话,那这篇文章给大家分享一下我的升级方法。

首先,先更新csproj,把之前的LTS 3.1改成 net6.0。同时也把 c# 语言改用版本 9,这样就可以更多的使用一些方便的语法。

  <PropertyGroup><TargetFramework>netcoreapp3.1</TargetFramework><LangVersion>7.3</LangVersion></PropertyGroup>

改成:

  <PropertyGroup><TargetFramework>net6.0</TargetFramework><LangVersion>9</LangVersion></PropertyGroup>

第二步,把所有对应的library也升级到最新版本

  <ItemGroup><PackageReference Include="AdaptiveCards" Version="1.2.4" /><PackageReference Include="Microsoft.Bot.Builder" Version="4.9.3" /><PackageReference Include="WindowsAzure.Storage" Version="9.3.3" /><PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.13.1" /><PackageReference Include="Microsoft.AspNetCore.AzureAppServicesIntegration" Version="3.1.3" /><PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="3.1.3" /><PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="3.0.2" /><PackageReference Include="AspNetCore.HealthChecks.Uris" Version="3.0.0" /><PackageReference Include="Serilog.AspNetCore" Version="3.2.0" /><PackageReference Include="Serilog.Sinks.ApplicationInsights" Version="3.1.0" /><PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /><PackageReference Include="Swashbuckle.AspNetCore" Version="5.2.1" /><PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="5.2.1" /><PackageReference Include="System.Net.Http.Json" Version="3.2.1" /></ItemGroup>

改成

  <ItemGroup><PackageReference Include="AdaptiveCards" Version="2.7.3" /><PackageReference Include="Microsoft.Bot.Builder" Version="4.15.0" /><PackageReference Include="WindowsAzure.Storage" Version="9.3.3" /><PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.19.0" /><PackageReference Include="Microsoft.AspNetCore.AzureAppServicesIntegration" Version="6.0.0" /><PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="3.1.21" /><PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="6.0.1-rc2.4" /><PackageReference Include="AspNetCore.HealthChecks.Uris" Version="6.0.1" /><PackageReference Include="Serilog.AspNetCore" Version="4.1.0" /><PackageReference Include="Serilog.Sinks.ApplicationInsights" Version="3.1.0" /><PackageReference Include="Serilog.Sinks.Console" Version="4.0.1" /><PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /><PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="6.2.3" /><PackageReference Include="System.Net.Http.Json" Version="6.0.0" /></ItemGroup>

编译后,会发现有些warning,虽然不改也可以,但是有强迫症的我,必须把他们改掉。

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Latest).AddJsonOptions(opt =>{...opt.JsonSerializerOptions.IgnoreNullValues = true;...});

3.1中的 SetCompatibilityVersion(CompatibilityVersion.Latest) 已经不再被使用了,直接去掉就可以。

另外,System.Text.Json 中的 IgnoreNullValues 也被标记成了 obsolete,将会在以后版本中移除,我们可以改成 opt.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;,可以参考这个文档 JsonSerializerOptions.IgnoreNullValues Property (System.Text.Json) | Microsoft Docs

改完后是:

services.AddMvc().AddJsonOptions(opt =>{...opt.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;...});

最后还有一个warning是 teams bot的,是说:

warning CS0618: 'AppCredentials.TrustServiceUrl(string, DateTime)' is obsolete: 'TrustServiceUrl is not a required part of the security model.'

所以,如果大家在teams app的代码中使用了 TrustServiceUrl(),那当你升级到最新的 teams sdk后,就可以删除这句了。

MicrosoftAppCredentials.TrustServiceUrl(botServiceUrl, dateTimeService.UtcNow.AddDays(7).DateTime);

改完后,checkin,一切正常,赞!说明 .net 6 在向前兼容上做的很不错。

虽然这个只是最最简单的升级方法,代码层面还没有使用 .net6 和 c# 9 带给我的新功能,我会在后面的文章中继续介绍我如何enable nullable 和 implicit using,特别是 nullable,可以极大的提高代码的质量。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

作为程序猿,一定要知道的电脑快捷键和Eclipse快捷键

2019独角兽企业重金招聘Python工程师标准>>> 转载自&#xff1a;Java资源社区 1. F2 当你选中一个文件的话&#xff0c;这意味着“重命名”2. F5 刷新3. CTRLF5 强行刷新4. F12另存为5. Alt &#xff0b;F4 关闭程序6. Home首行7. Ctrl Home游标移动到文字编辑的开…

QCustomplot(一) 能做什么事

阅读目录 一、QCustomPlot简介二、效果预览三、源码下载四、相关文章回到顶部一、QCustomPlot简介 之前在Qt之自绘制饼图这篇文章的说明中我简单的描述了下目前依赖于qt的第三方绘图库&#xff0c;此后我会针对自己使用QCustomPlot的情况做一总结&#xff0c;以方便大家参考 QC…

shiro(一)简介、理论知识

2019独角兽企业重金招聘Python工程师标准>>> 开涛学shiro&#xff1a;http://jinnianshilongnian.iteye.com/blog/2018398 shirospirngmvc参考: https://www.cnblogs.com/sharpest/p/5865732.html http://peirenlei.iteye.com/blog/2086639 https://blog.csdn.net/c…

Teams 的 Meeting App

Teams 的 Meeting App 已经正式推出了一段时间&#xff0c;相应的文档也已经较为完善了&#xff0c;我接下来会写一系列的文章&#xff0c;来介绍如何开发一个自己的Meeting app。这篇文章作为这个系列的第一篇&#xff0c;将介绍 meeting app 是如何被使用的&#xff0c;有哪些…

开发第一个Meeting App

今天我们来看一下如何使用c# net6 来开发一个 teams的 meeting app。首先先确保本地安装了最新版本的 net6。创建一个目录&#xff0c;然后在目录下输入下面的命令行&#xff0c;让 dotnet 来生成一个初步的asp.net core 代码框架。 dotnet new razor代码框架生成如下的目录和…

solrCloud搭建

一.什么是solrCloud&#xff1f; SolrCoud(solr云)是solr提供的分布式搜索方案。当一个系统搜索请求并发很高的时候&#xff0c;就需要使用solrCloud来满足这些需求 solrCloud是基于solr和zookeeper的分布式的搜索方案&#xff0c;它的主要思想是使用zookeeper作为挤集群配置的…

如何获取 Teams Meeting 的上下文信息

我们上一篇文章讲了如果使用 net6 和 c# 来快速开发一个最简单的 teams meeting app。为了让大家比较容易理解&#xff0c;上个sample非常简单&#xff0c;简单到没有什么功能&#xff0c;那我们现在就来慢慢扩展这个app的功能&#xff1a;看看如何获取 meeting 的上下文。 打…

会议中的Meeting App

接着我们上两篇博客文章&#xff0c;我们说了如何开发会议前和会议后的 meeting app&#xff0c;那如何开发一个会议中的 app 呢&#xff0c;实际上比较简单&#xff0c;我们只需要在 tab 的配置项中勾选下面这两个选项即可。 勾选后&#xff0c;我们安装app到我们的一个会议中…

0-2岁的app开发人员必读,Android开发APP前的准备事项

2019独角兽企业重金招聘Python工程师标准>>> 随着移动互联网的兴起&#xff0c;各行各业对移动应用的需求越来越大&#xff0c;从事APP开发的人也越来越多&#xff0c;APP开发行业可以说是方兴未艾。APP开发是比较复杂的事情&#xff0c;涉及产品、美工设计、服务器…

Teams Meeting App的 task 弹出框

前几篇文章我们介绍了 Teams Meeting App 的各种类型和如何从无到有的使用 net6 和 c# 来开发一个 Teams Meeting app&#xff0c;那今天我们开始讨论一些 meeting app 的高级互动&#xff1a; task 弹出框。我们先来快速修改一下之前的代码&#xff0c;看看什么是 task 弹出框…

react 学习

react官网地址&#xff1a;http://facebook.github.io/react/ webpack官网地址&#xff1a;http://webpack.js.org/ 英文 https://www.webpackjs.com/ 中文 参考资料&#xff1a; React 入门实例教程-阮一峰 webpack的学习 学习列表&#xff1a; 了解react的语法&#x…

Teams Developer Portal介绍

在去年的 Build2021 大会上讲到的 Teams Developer Portal 已经上线一段时间了&#xff0c;我这几天玩了一下&#xff0c;发现比之前的 app studio 强大了很多&#xff0c;所以赶快写篇文章和大家分享。 Developer Portal 有两种访问的方式&#xff0c;一个是网页版&#xff0…

使用环境变量来配置 Teams App 的 manifest

上篇文章我们介绍了 Teams 的 Developer Portal&#xff0c;今天我想分享一个dev portal里一个比较实用的功能。这个功能在之前的 App Studio 里没有。这个功能叫 Environment variables。 当我们真实开发一个 teams app的时候&#xff0c;肯定有自己的开发环境&#xff0c;测…

[Unity优化]批处理03:静态批处理

[Unity优化]批处理03&#xff1a;静态批处理 原理&#xff1a; 运行时&#xff0c;把需要进行静态批处理的网格合并到一个新的网格中。虽然只进行一次合并操作&#xff0c;但是会占用更多的内存来存储合并后的网格&#xff0c;并且被静态批处理的物体无法移动旋转缩放 要使用静…

JS获取IP地址

HTML代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><script src"https://unpkg.com/vue/dist/vue.js"></script></head><body><div id"vm&quo…

1小时玩爆趣头条自媒体平台,增粉实战操作分享

做自媒体的人最关注的就是每天自己账号的后台数据&#xff0c;因为数据决定当天的收益。因此只要每天能达到几十万的数据&#xff0c;相信对于做自媒体的朋友来说&#xff0c;一个月下来&#xff0c;最少也有1万以上的收入。目前&#xff0c;自媒体平台能赚钱的平台有很多&…

隧道6in4 和隧道6to4(GNS3)

隧道6in4实验配置 拓扑图 Device Interface IP Address&#xff08;IPv6&#xff09; R1 F 0/0 10.1.81.1 F 0/1 2001:db8:cafe:81::10 R2 F 0/0 10.81.1.2 F 0/1 172.81.1.2 R3 F 0/0 172.81.1.3 F 0/1 2001:DB8:ACE:81::20 R4 F 0/0 2001:db8:cafe:81::4…

hadoop常用命令总结

2019独角兽企业重金招聘Python工程师标准>>> 一、前述 分享一篇hadoop的常用命令的总结&#xff0c;将常用的Hadoop命令总结如下。 二、具体 1、启动hadoop所有进程 start-all.sh等价于start-dfs.sh start-yarn.sh 但是一般不推荐使用start-all.sh(因为开源框架中内…

几道web题简单总结

拖了好长时间&#xff0c;总结一下这一段时间做的几道值得记录一下的题目&#xff0c;有的没做出来&#xff0c;但是学习到了新的东西 1.homebrew event loop ddctf的一道题目&#xff0c;学到了python eval函数的用法&#xff0c;首先分析题目&#xff1a; # -*- encoding: ut…

.NET中RabbitMQ的使用

.NET中RabbitMQ的使用 概述 MQ全称为Message Queue, 消息队列&#xff08;MQ&#xff09;是一种应用程序对应用程序的通信方法。RabbitMQ是一个在AMQP基础上完整的&#xff0c;可复用的企业消息系统。他遵循Mozilla Public License开源协议。AMQP(高级消息队列协议) 是一个异步…