技术速递|宣布为 .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.mzph.cn/web/44029.shtml

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

相关文章

【C语言】 —— 预处理详解(下)

【C语言】 —— 预处理详解&#xff08;下&#xff09; 前言七、# 和 \##7.1 # 运算符7.2 ## 运算符 八、命名约定九、# u n d e f undef undef十、命令行定义十一、条件编译11.1、单分支的条件编译11.2、多分支的条件编译11.3、判断是否被定义11.4、嵌套指令 十二、头文件的包…

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;是一种用…

HTTP协议分析/burp/goby/xray

一、HTTP简介 HTTP(超文本传输协议)是今天所有web应用程序使用的通信协议。最初&#xff0c;HTTP只是一个为获取基于文本的静态资源而开发的简单协议&#xff0c;后来人们以名种形式扩展和利用它.使其能够支持如今常见的复杂分布式应用程序。HTTP使用一种用于消息的模型:客户端…

javaweb中的请求与响应--基于postman工具的应用(附带postman的详细安装步骤)

一、前言 后端的第一天感觉难度就上来了&#xff0c;可能是基础太过薄弱了吧。目前看视频已经有点跟不上了&#xff0c;果然15天想要拿下还是太勉强了点。30天还差不多。不知道读者们有没有好好的去学这方面的知识&#xff0c;没有什么是学不会的&#xff0c;关键是坚持。 Po…

几个小创新模型,KAN组合网络(LSTM、GRU、Transformer)回归预测,python预测全家桶再更新!...

截止到本期&#xff0c;一共发了9篇关于机器学习预测全家桶Python代码的文章。参考往期文章如下&#xff1a; 1.终于来了&#xff01;python机器学习预测全家桶 2.机器学习预测全家桶-Python&#xff0c;一次性搞定多/单特征输入&#xff0c;多/单步预测&#xff01;最强模板&a…

萝卜快跑的狠活

萝卜快跑作为百度旗下的自动驾驶出行服务平台&#xff0c;在科技应用上展现了多项领先的技术。以下是萝卜快跑采用的一些主要科技“狠活”&#xff1a; 自动驾驶技术&#xff1a; 萝卜快跑主要使用了百度Apollo的L4级自动驾驶技术&#xff0c;该技术能够应对海量的城市道路场景…

C++:重定义

派生类和基类的同名成员问题 派生类中再实现一个基类中的方法会怎样 (1)代码实验&#xff1a;派生类和基类中各自实现一个内容不同但函数原型完全相同的方法&#xff0c;会怎么样 (2)结论&#xff1a;基类对象调用的是基类的方法&#xff0c;派生类对象调用执行的是派生类中重…

进程调度篇

在操作系统的广阔领域中&#xff0c;进程调度是其中一个至关重要的环节。它如同操作系统的“交通警察”&#xff0c;负责在多个等待CPU执行的进程间进行高效、公平的分配。本文将带您了解进程调度的基本概念、重要性、常用算法…… 1. 进程调度的基本概念 1.1 进程调度的定义 …

【FreeRTOS】freeRTOS的Tmr Svc任务优先级配置

1、Tmr Svc是个FreeRTOS的软件定时器任务&#xff0c;他可以收集各任务的状态 2、他的优先级可以通过宏 configTIMER_TASK_PRIORITY 来配置&#xff0c;默认是2 3、修改为31后&#xff0c;程序总是启动不了&#xff0c; 4、后面才发现原来FreeRTOS的默认最大优先级号配置的是…

鸿蒙Navigation的页面跳转官方代码

星河版本 文章部分代码来源于官方 文章部分代码来源于官方只是自己改了容易理解 与API4不同的Navigation 新版本使用的思路是 1、创建页面栈 pageInfos: NavPathStack new NavPathStack();2、resources/base/profile创建 router_map.json 文件 {"routerMap":…

数电设计提问求帮助,出租车计费器。

&#x1f3c6;本文收录于《CSDN问答解惑-》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&…

Autosar诊断实战系列28-2E写DID Pending期间偶发回NRC0x13问题排查

本文框架 前言1.问题描述2.问题复现3.问题分析问题1:为何在2E Pending期间会发送功能寻址的10 01回NRC13?问题2:在ECU Pending期间收到功能寻址10 01,MCU需要如何处理?问题3:DcmDslConnection是如何定义的?问题4:功能寻址于物理寻址是否对应不同的DcmDslConnection?问…

Point Cloud Library (PCL) for Python - pclpy 安装指南 (2)

Point Cloud Library (PCL) for Python - pclpy 安装指南 (1) 导入库 from pclpy import pcl import numpy as np导入pclpy库中的pcl模块&#xff0c;用于处理点云数据。numpy库用于处理数值数据。 读取点云 cloud pcl.PointCloud.PointXYZRGB() pcl.io.loadPCDFile(F:\\bunn…

2024年西安铁一中集训DAY1---- 杂题选讲

文章目录 牛客练习赛125 E 联谊活动&#xff08;枚举&#xff0c;分讨&#xff09;牛客练习赛125 F 玻璃弹珠&#xff08;类莫队&#xff0c;离线询问&#xff0c;数据结构&#xff09;2024ccpc长春邀请赛 D Parallel Lines&#xff08;随机化&#xff09;2024ccpc长春邀请赛 E…