技術速遞|宣布為 .NET 升級助手提供第三方 API 和包映射支持

作者:Marco Goertz

排版:Alan Wang

.NET 升級助手是一個 Visual Studio 擴展和命令行工具,可幫助您將應用從之前的 .NET 和 .NET Framework 升級到最新版本的 .NET。正如我們在之前的文章中所描述的那樣,它為升級 Microsoft 庫和框架提供了強大的支持。我們很高興地宣布增加了第三方 API 和包映射支持,這將允許您能夠在升級過程中輕松找到過時的第三方 API 和包并將其替換為較新的版本。此新功能簡化了向新平臺(如從 UWP 到 WinUI 或從 Xamarin Forms 到 .NET MAUI)的過渡,確保了更順暢、更高效的升級體驗。

什么是第三方 API 和包映射支持?

將舊應用程序升級到最新版本的 .NET 的挑戰之一是從第三方庫中找到等效的 API 和 NuGet 包。當您還要升級到一個新平臺時,這尤其具有挑戰性,例如從 UWP 升級到 WinUI 或從 Xamarin Forms 升級到 .NET MAUI。對于后者,您需要將 Xamarin.Forms 命名空間替換為 Microsoft.Maui 和/或 Microsoft.Maui.Controls。

但這僅僅是個開始。除了命名空間之外,類型和方法通常也不同,因此您可能需要對代碼進行一些更改才能使用新的 API。讓我們以 Xamarin.Forms.Color 為例。您不僅需要將命名空間從 Xamarin.Forms 更新為 Microsoft.Maui.Graphics,還需要將 R、G 或 B 等屬性更改為 Red、Green 或 Blue,而且靜態 Color 屬性(例如 AliceBlue)現在屬于一個新類型 Colors。為了幫助您完成此任務,.NET 升級助手包含了一套全面的 Microsoft 擁有庫的已知映射。但是您可能使用的所有流行的第三方庫怎么辦?第三方可以為自己的庫提供映射嗎?

是的,可以!.NET 升級助手現在支持第三方 API 和包映射。此功能允許任何人為其自己的庫指定映射,其中包含有關舊 API 和包以及新 API 和包的信息。升級助手將在升級期間使用這些映射以及內置映射來進行代碼和項目更改。

如何創建 API 和包映射

若要為 .NET 升級助手創建第三方 API 映射,您需要執行以下操作:

  • 首先閱讀 upgrade-assistant github repo 中的 README.md 文件
  • 克隆 repo 并在 Visual Studio 中打開 UpgradeAssistant.Extensions.sln
  • 在 UpgradeAssistant.Mappings 項目的 mappings 下為您的公司創建一個新文件夾,并在其中為您的庫創建一個子文件夾
  • 為您的庫添加 *.apimap.json 和 *.packagemap.json 文件(使用示例或任何現有映射作為起點)
  • 通過運行 Pack 命令為映射創建 NuGet 包
    在這里插入圖片描述

如何測試 API 和包映射

若要使用為 .NET 升級助手創建的映射測試 NuGet 包,您需要執行以下步驟:

  1. 確保您擁有來自 Visual Studio Marketplace 的最新版本的 .NET 升級助手擴展

  2. 創建/打開一個使用您新映射中指定的 API 和包的測試項目,以進行升級

  3. 設置本地源文件夾,例如 C:\LocalFeed

  4. 將之前創建的 Microsoft.UpgradeAssistant.Mappings 包添加到本地源,通過在輸出文件夾中運行以下命令:

nuget add Microsoft.UpgradeAssistant.Mappings.1.0.0.nupkg -source C:\LocalFeed
  1. 在第二步的測試項目的解決方案文件夾中創建一個 Nuget.config 文件,內容如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration><packageSources><add key="Local Feed" value="C:\LocalFeed" /></packageSources>
</configuration>
  1. 運行升級助手來升級測試項目

API 和包將根據您創建的映射進行升級。

接下來發生什么?

一旦您驗證了新映射按預期工作后,我們鼓勵您在 upgrade-assistant github repo 中創建拉取請求。我們將審核您的更改,合并后,CI/CD 管道將創建一個新的 Microsoft.UpgradeAssistant.Mappings 包并將其發布在 nuget.org 上。發布后,現有的 .NET Upgrade Assistant 安裝將在升級期間包含新映射。

您正在手動升級到 .NET MAUI 嗎?

如果是這樣,您是否知道 .NET 升級助手擴展包含用于 Xamarin.Forms -> .NET MAUI 升級的 C# 分析器和代碼修復程序?它可以幫助您手動升級從 Xamarin.Forms 項目復制到 .NET MAUI 項目的代碼。分析器會查找 Xamarin.Forms 命名空間,輕量級代碼修復工具會根據內置映射以及新的第三方 API 映射應用代碼更改。您可以試一試。
在這里插入圖片描述

總結

第三方 API 和包映射支持是一項新功能,它擴展了 .NET 升級助手的功能,以幫助升級具有第三方庫依賴項的項目。您可以通過創建和共享庫的升級映射來為 .NET 開發者社區做出貢獻。

我們希望此功能對您有用,我們歡迎您通過評論此博客文章或在升級助手 github 存儲庫中提供反饋和建議。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44029.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44029.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44029.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

技術總結(1)——方向與成長思考

不知不覺已經發了30篇技術博客&#xff0c;本來最開始想的是回顧自己的技術生涯&#xff0c;怎樣做到失敗的生涯&#xff0c;但是后面發現&#xff0c;開始逐步寫技術博客&#xff0c;慢慢的開始沉浸里面這種回顧技術的感覺。做技術的人通常不喜歡研究市場&#xff0c;而做市場…

模型剪枝知識點整理

模型剪枝知識點整理 剪枝是深度學習模型優化的兩種常見技術&#xff0c;用于減少模型復雜度和提升推理速度&#xff0c;適用于資源受限的環境。 剪枝&#xff08;Pruning&#xff09; 剪枝是一種通過移除模型中不重要或冗余的參數來減少模型大小和計算量的方法。剪枝通常分為…

編程是學什么:探索編程世界的四大核心領域

編程是學什么&#xff1a;探索編程世界的四大核心領域 在數字化時代的浪潮中&#xff0c;編程已成為一項重要的技能。但很多人對于編程的學習內容仍然感到困惑&#xff0c;那么&#xff0c;編程究竟是學什么呢&#xff1f;本文將從四個方面、五個方面、六個方面和七個方面&…

探索TASKCTL和 DataStage 的ETL任務調度協同

在復雜多變的企業環境中&#xff0c;高效、準確的數據處理是支撐業務決策與運營的核心。本文將深入探討任務調度平臺TASKCTL與ETL工具DataStage的深度融合&#xff0c;通過詳盡的代碼示例、結合細節以及實際案例的具體描述&#xff0c;展示這兩個工具如何攜手打造企業數據處理生…

Xcode構建設置自定義:打造個性化的編譯環境

標題&#xff1a;Xcode構建設置自定義&#xff1a;打造個性化的編譯環境 在軟件開發過程中&#xff0c;根據不同的開發階段和需求&#xff0c;經常需要調整編譯設置以優化構建過程。Xcode作為蘋果官方的集成開發環境&#xff08;IDE&#xff09;&#xff0c;提供了豐富的自定義…

簡述 Java 內存模型(JMM),特別是堆與棧的區別?

Java內存模型&#xff08;JMM&#xff09;是Java平臺定義的一種多線程之間的通信規范&#xff0c;它確保了在不同的線程之間能夠正確地共享和協調對內存的訪問。 JMM的關鍵目標是解決并發編程中的可見性、原子性和有序性問題。 簡單來說&#xff0c;它規定了如何在硬件內存、…

【C語言】 —— 預處理詳解(下)

【C語言】 —— 預處理詳解&#xff08;下&#xff09; 前言七、# 和 \##7.1 # 運算符7.2 ## 運算符 八、命名約定九、# u n d e f undef undef十、命令行定義十一、條件編譯11.1、單分支的條件編譯11.2、多分支的條件編譯11.3、判斷是否被定義11.4、嵌套指令 十二、頭文件的包…

淺層神經網絡示例

輸出層采用sigmoid激活&#xff0c;隱藏層采用tanh激活 import h5py import numpy as npfrom project_02.code.planar_utils import load_planar_dataset, plot_decision_boundarydef sigmoid(z):s 1 / (1 np.exp(-z))return sdef init_parameters(n_x, n_h, n_y):"&qu…

如何在 Objective-C 中實現多態性,并且它與其他面向對象編程語言的多態性實現有何差異?

在Objective-C中&#xff0c;多態性可以通過使用父類的指針來調用子類的方法來實現。具體來說&#xff0c;可以定義一個父類的指針&#xff0c;然后將子類的實例賦值給這個指針。這樣&#xff0c;即使使用父類的指針來調用方法&#xff0c;實際上會調用子類的方法。 需要注意的…

Day1每日編程題日記:數字統計、兩個數組的交集、點擊消除

前言&#xff1a;該篇用于記錄自看。曾回看昨天的做題代碼&#xff0c;竟然會覺得陌生&#xff0c;這竟然是我寫的&#xff0c;細細讀了一下&#xff0c;原來我當時是這么想的。因此我覺得記代碼沒有實際用處&#xff0c;重點是領悟了思想&#xff0c;這樣子代碼就在心中&#…

HashMap----源碼解讀

源碼分析&#xff1a; public class HashMap<K,V> extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable 在類的開頭聲明了幾個常量&#xff0c;以下是較為重要的&#xff1a; /*** 定義初始容量大小為16*/ static final int DEFAULT_I…

探索【Python面向對象】編程:新時代的高級編程范式詳解

目錄 1. 面向對象編程概念&#xff08;OOP&#xff09; 1.1 什么是類和對象&#xff1f; 1.2 類的定義 1.3 類和對象的關系 1.4 小李的理解 2. 抽象 2.1 抽象的概念 2.2 抽象類和方法 2.3 小李的理解 3. 類和實例 3.1 類的定義和實例化 3.2 類的屬性和方法 3.3 小…

如何使用Python在企業微信中發送測試結果?操作看這里!

在日常的自動化測試工作中&#xff0c;一般會需要把測試結果同步到工作群里&#xff0c;方便信息同步。那么我們今天就使用企業微信和Pythonrequests庫來演示一下具體如何操作吧&#xff01; 01 準備 開始之前&#xff0c;我們應該確保已經安裝了python環境&#xff0c;并且要…

DNS知識點

??打牌 : da pai ge的個人主頁 ???個人專欄 : da pai ge的博客專欄 ??寶劍鋒從磨礪出,梅花香自苦寒來 ? 目錄 一、DNS概念 二 hosts 文件 三 DNS優缺點 三 客戶端域名解析順序(優先級)…

8.9分王者“水刊”!1區IEEE-Trans,國人主編坐鎮!發文量2倍增長,擴刊趨勢明顯!

關注GZH【歐亞科睿學術】&#xff0c;第一時間了解最新期刊動態&#xff01; 本期&#xff0c;小編給大家推薦的是一本IEEE旗下王者“水刊”。該期刊目前處于擴刊狀態&#xff0c;接收跨學科領域&#xff0c;領域認可度高&#xff0c;還可選擇非OA模式無需版面費&#xff0c;是…

PPTP、L2TP、IPSec、IPS 有什么區別?

隨著互聯網的發展&#xff0c;保護網絡通信的安全越來越重要。PPTP、L2TP、IPSec、IPS是常見的網絡安全協議和技術&#xff0c;在保護網絡通信安全方面發揮著不同的作用和特點。下面介紹PPTP、L2TP、IPSec、IPS之間的區別。 點對點隧道協議&#xff08;PPTP&#xff09;是一種用…

對素數的一種新理解

素數是除了1和它自身沒有其它因數的自然數&#xff08;不包括1&#xff09;。素數被認為是自然數的基礎&#xff0c;就像自然界的原子一樣&#xff0c;可以通過若干個素數的乘積表示所有大于1的自然數&#xff0c;而且這種表示是唯一的&#xff08;不考慮素數的順序&#xff09…

HTTP協議分析/burp/goby/xray

一、HTTP簡介 HTTP(超文本傳輸協議)是今天所有web應用程序使用的通信協議。最初&#xff0c;HTTP只是一個為獲取基于文本的靜態資源而開發的簡單協議&#xff0c;后來人們以名種形式擴展和利用它.使其能夠支持如今常見的復雜分布式應用程序。HTTP使用一種用于消息的模型:客戶端…

Golang異常處理機制

go語言使用error來處理錯誤&#xff0c;用panic和recover來處理異常 error go語言的錯誤處理有兩個發展階段&#xff0c;以go1.13版本為分水嶺&#xff0c;在1.13版本之前&#xff0c;標準庫對error的支持非常有限&#xff0c;僅有errors.New()和fmt.Errorf()兩個函數來構造e…

javaweb中的請求與響應--基于postman工具的應用(附帶postman的詳細安裝步驟)

一、前言 后端的第一天感覺難度就上來了&#xff0c;可能是基礎太過薄弱了吧。目前看視頻已經有點跟不上了&#xff0c;果然15天想要拿下還是太勉強了點。30天還差不多。不知道讀者們有沒有好好的去學這方面的知識&#xff0c;沒有什么是學不會的&#xff0c;關鍵是堅持。 Po…