技术速递|宣布为 .NET 升级助手提供第三方 API 和包映射支持

news2024/9/9 8:04:28

作者: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.coloradmin.cn/o/1919109.html

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

相关文章

vite+vue3创建cesium (ts/js)

在要创建项目的文件夹。输入cmd 1.搭建第一个Vite项目。 npm init vitelatest 安装Cesium插件 cesium插件&#xff1a;vite-plugin-cesium npm i cesium vite-plugin-cesium vite -D配置cesium 在vite.config.ts/vite.config.js文件中 import cesium from vite-plugin-ces…

韦东山嵌入式linux系列-LED 驱动程序框架

1 回顾字符设备驱动程序框架 图中驱动层访问硬件外设寄存器依靠的是 ioremap 函数去映射到寄存器地址&#xff0c;然后开始控制寄存器。 那么该如何编写驱动程序&#xff1f; ① 确定主设备号&#xff0c;也可以让内核分配&#xff1b;② 定义自己的 file_operations 结构体&…

【D3.js in Action 3 精译】1.3 D3 视角下的数据可视化最佳实践(下)

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介 ✔️ 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知 1.2.1 HTML 与 DOM1.2.2 SVG - 可缩放矢量图形1.2.3 Canvas 与 WebGL1.2.4 CSS1.2.5 JavaScript1.2.6 Node 与 JavaScript 框架1.2.7 Observable 记事…

Qt常用基础控件总结—旋转框部件(QSpinBox类和QDoubleSpinBox类)

旋转框(微调按钮)部件 QAbstractSpinBox 类 QAbstractSpinBox 类介绍 QAbstractSpinBox 类是 QWidget 类的直接子类,虽然该类不是抽象类,但该类并未提供实际的功能,仅为旋转框提供了一些外观的形式以及需要子类实现了成员,也就是说点击微调按钮的上/下按钮,不会使其中的…

DID差分模型案例集(传统DID、队列DID、渐近DID、空间DID、PSM-DID)

双重差分&#xff08;DID&#xff09;模型是一种广泛应用于经济学、社会学等领域的统计方法&#xff0c;主要用于评估政策或事件的因果效应。以下是DID模型几个重要变体的简要介绍&#xff1a; 1、传统DID&#xff08;Traditional DID&#xff09;&#xff1a;这是DID模型的基…

Keepalived+HAProxy 集群及虚IP切换实践

1、软件介绍 ①Keepalived keepalive是一个用c语言编写的路由软件&#xff0c;这个项目的主要目标是为Linux系统和基于Linux的基础设施提供简单而健壮的负载平衡和高可用性设施。负载均衡框架依赖于众所周知且广泛使用的Linux Virtual Server (IPVS)内核模块提供第4层负载均衡…

代码随想录算法训练营Day21 | 669. 修剪二叉搜索树 | 108.将有序数组转换为二叉搜索树 | 538.把二叉搜索树转换为累加树

今日任务 669. 修剪二叉搜索树 题目链接&#xff1a; https://leetcode.cn/problems/trim-a-binary-search-tree/description/题目描述&#xff1a; Code class Solution { public:TreeNode* trimBST(TreeNode* root, int low, int high) {if(root nullptr){return root;…

应力 (Stress) 是指单位面积上所承受的力

应力 (Stress) 是指单位面积上所承受的力 flyfish 轴向力 轴向力 (Axial Force) 是指沿着物体的纵轴施加的力。对于一根杆或柱子&#xff0c;轴向力可以是拉力或压力&#xff0c;具体取决于力的方向。 拉力 (Tensile Force)&#xff1a;使物体拉长的力。 压力 (Compressive…

程序员学长 | 快速学习一个算法,GAN

本文来源公众号“程序员学长”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;快速学习一个算法&#xff0c;GAN GAN 如何工作&#xff1f; GAN 由两个部分组成&#xff1a;生成器&#xff08;Generator&#xff09;和判别器&…

C标准库读写文件

函数介绍 库变量 变量描述size_t无符号整数类型&#xff0c;是sizeof关键字的结果&#xff0c;表示对象大小FILE文件流类型&#xff0c;适合存储文件流信息的对象类型 库宏 宏描述NULL空指针常量EOF表示已经到达文件结束的负整数stderr、stdin、stdout指向FILE类型的指针&a…

【AIGC】二、mac本地采用GPU启动keras运算

mac本地采用GPU启动keras运算 一、问题背景二、技术背景三、实验验证本机配置安装PlaidML安装plaidml-keras配置默认显卡 运行采用 CPU运算的代码step1 先导入keras包&#xff0c;导入数据cifar10&#xff0c;这里可能涉及外网下载&#xff0c;有问题可以参考[keras使用基础问题…

starccm+软件许可优化解决方案

starccm软件介绍 Simcenter Star CCM专注于CFD的多物理场仿真&#xff0c;支持流体动力学模拟、电池模拟、协同仿真、设计探索、电机、电化学、引擎模拟、移动物体、流变学、固体力学等多个方面&#xff0c;无论是真实的多物理场仿真&#xff0c;捕捉产品的完整几何形状&#x…

LVS实验

LVS实验 nginx1 RS1 192.168.11.137 nginx2 RS2 192.168.11.138 test4 调度器 ens33 192.168.11.135 ens36 12.0.0.1 test2 客户端 12.0.0.10 一、test4 配置两张网卡地址信息 [roottest4 network-scripts]# cat ifcfg-ens33 TYPEEthernet BOOTPROTOstatic DEFROUTEyes DEVIC…

利用 Plotly.js 创建交互式条形图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 利用 Plotly.js 创建交互式条形图 应用场景介绍 交互式条形图广泛应用于数据可视化和分析领域。它可以直观地展示不同类别或分组之间的数值差异&#xff0c;并允许用户通过交互操作探索数据。 代码基本功能介…

【经典面试题】环形链表

1.环形链表oj 2. oj解法 利用快慢指针&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; bool hasCycle(struct ListNode *head) {ListNode* slow head, *fast…

51单片机(STC8051U34K64)_RA8889_SPI4参考代码(v1.3)

硬件&#xff1a;STC8051U34K64 RA8889开发板&#xff08;硬件跳线变更为SPI-4模式&#xff0c;PS101&#xff0c;R143&#xff0c;R141短接&#xff0c;R142不接&#xff09; STC8051U34K64是STC最新推出来的单片机&#xff0c;主要用于替换传统的8051单片机&#xff0c;与标…

大佬,简单解释下“嵌入式软件开发”和“嵌入式硬件开发”的区别

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;首先&#xff0c;嵌入式硬…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第十九章 Linux 工具之make 工具和 makefile 文件

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

【car】深入浅出学习机械燃油车知识、结构、原理、维修、保养、改装、编程

汽车的五大总成通常是指发动机、变速器、前后桥、车架和悬挂系统。 发动机&#xff1a;是汽车的动力来源&#xff0c;负责将燃料的化学能转化为机械能&#xff0c;驱动汽车行驶。常见的发动机类型有内燃机&#xff08;如汽油发动机、柴油发动机&#xff09;和电动机&#xff0…