將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.pswp.cn/news/277859.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277859.shtml
英文地址,請注明出處:http://en.pswp.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…

在Teams app代碼中enable nullable

昨天講了一下如何把代碼升級到 net6&#xff0c;今天我優化了好幾個小時更新代碼&#xff0c;enable了nullable。 c#的nullable我一直非常喜歡&#xff0c;它可以幫助開發人員&#xff0c;讓開發人員去思考&#xff0c;哪些地方需要可以為null&#xff0c;哪些地方不需要。它并…

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…

2019.04.24筆記

*&#xff09;關于swing 今天同學誤解了我的意思&#xff0c;以為我要用java代碼做頁面和圖形&#xff0c;給我推薦了swing。 swing真是眼熟&#xff0c;大學課程里的。通過后臺代碼操作頁面和圖形。記得當年大學時&#xff0c;swing就已經淪為一種過時的技術了。到現在&#x…

Teams 的 Meeting App

Teams 的 Meeting App 已經正式推出了一段時間&#xff0c;相應的文檔也已經較為完善了&#xff0c;我接下來會寫一系列的文章&#xff0c;來介紹如何開發一個自己的Meeting app。這篇文章作為這個系列的第一篇&#xff0c;將介紹 meeting app 是如何被使用的&#xff0c;有哪些…

Github上最受歡迎的Python輕量級框架Flask入門

flask最近終于發布了它的1.0版本更新&#xff0c;從項目開源到最近的1.0版本flask已經走過了8個年頭。# app.py from flask import Flask app Flask(__name__)app.route("/") def hello():return "Hello World!"if __name__ "__main__":app.ru…

mysql表關聯

mysql的表關聯&#xff1a; left join(左聯接) 返回包括左表中的所有記錄和右表中聯結字段相等的記錄 right join(右聯接) 返回包括右表中的所有記錄和左表中聯結字段相等的記錄 inner join(等值連接) 只返回兩個表中聯結字段相等的行 轉載于:https://www.cnblogs.com/bloghua…

開發第一個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作為擠集群配置的…

Linux 添加新用戶賬號并賦予root權限

除了root用戶之外&#xff0c;通常需要為每個管理創建各自的用戶賬號&#xff0c;方便每個管理員登錄使用&#xff0c; 步驟如下&#xff1a; 1. 添加新用戶賬號 useradd mary.lee 2. 為新用戶賬號設置密碼 passwd mary.lee 3. 為新用戶賬號賦予root權限 usermod -a -G root…

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

我們上一篇文章講了如果使用 net6 和 c# 來快速開發一個最簡單的 teams meeting app。為了讓大家比較容易理解&#xff0c;上個sample非常簡單&#xff0c;簡單到沒有什么功能&#xff0c;那我們現在就來慢慢擴展這個app的功能&#xff1a;看看如何獲取 meeting 的上下文。 打…

php的運行流程

1、Zend引擎&#xff1a;Zend整體用純C實現&#xff0c;是PHP的內核部分&#xff0c;他將PHP代碼翻譯&#xff08;詞法、語法解析等一系列編譯過程&#xff09;為可執行opcode的處理并實現相應的處理方法、實現了基本的數據結構&#xff08;如&#xff1a;hashtable、OO&#x…

內置方法

isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)檢查是否obj是否是類 cls 的對象 class Foo(object):pass obj Foo() isinstance(obj, Foo) issubclass(sub, super)檢查sub類是否是 super 類的派生類 class Foo(object):pass class Bar(Foo):pass issubclass…

會議中的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;涉及產品、美工設計、服務器…

FixedThreadPool吞掉了異常

為了方便遍描述問題&#xff0c;如下是簡化后的 public class RunException {public static void main(String[] args) { ExecutorService readerPool Executors.newFixedThreadPool(3); readerPool.submit(new Runnable() { public void run() { throw new RuntimeException(…

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 Meeting 詳情

最近有一些朋友問我&#xff0c;有沒有可能獲取到會議的詳情&#xff0c;我搜索了目前所有的 teams 文檔&#xff0c;發現有一個api可以獲取&#xff0c;不過在我寫這篇文章的時候&#xff0c;這個 api 還在 preview 階段&#xff0c;可能在正式發布前&#xff0c;還會有一些變…