【译】.NET 升级助手现在支持升级到集中式包管理
原文 | McKenna Barlow
翻译 | 郑子铭
最近,.NET 升级助手引入了一些有用的新功能和一种新的中央包管理 (CPM) 升级类型。
.NET 升级助手可帮助您将解决方案升级到较新版本的 .NET。无论您是从 .NET Framework 升级到 .NET 8 还是仅在 .NET 版本之间升级,.NET 升级助手都可以帮助您了解需要进行哪些更改,并为您自动执行许多更改。.NET 升级助手可作为 Visual Studio 扩展或命令行工具使用。
最新版本的升级助手引入了一种新类型的升级,允许您将整个解决方案或选定的一组项目转换为使用 Nuget 中央包管理 (CPM)。
升级以在 Visual Studio 中使用 CPM
要开始在安装了升级助手扩展的 Visual Studio 中将项目升级到 CPM,请右键单击解决方案资源管理器中的项目节点并选择升级。您会注意到一个新的升级项目功能 - Nuget Central 包管理 (CPM)。

如果您选择此选项,下一个屏幕将为您提供选择解决方案中任意数量的其他项目以升级到 CPM 的选项,但在大多数情况下,我们建议您升级解决方案中的所有项目。

下一页提供了一些自定义选项。如果您还想将选定的项目转换为 SDK 样式,可以选中该选项的复选框。默认情况下,Web 项目不会转换为 SDK 样式,因为如果将经典 Web 项目原样转换为 SDK 样式,则没有官方工具支持。建议您单独升级这些 Web 项目,但如果您想在此处包含它们,可以通过选中“将 Web 项目包含到 SDK 转换”复选框来实现。

此页面还提供 Nuget Central 包管理设置。建议使用传递固定,默认情况下启用。我们还提供了建议的文件路径,所有集中包版本都将存储在该路径中。如果建议的位置不正确,您可以自行选择其他位置。最后一个自定义选项是能够添加 JSON 配置文件来定义这些相同的选择。
当您对选择感到满意时,单击升级以继续升级到 CPM。
使用 CLI 升级
也可以通过 .NET 升级助手命令行工具进行相同的 CPM 升级。通过在命令提示符中导航到您的解决方案并使用以下命令来调用升级助手 CLI:
upgrade-assistant upgrade
首先,您将选择要升级的项目,但稍后您可以选择更多项目。接下来,您将选择要如何升级项目。新的 CPM 升级选项可以在 NuGet 升级下找到,列为“NuGet 中央包管理 (CPM)”。

接下来,您将选择解决方案中要升级到 CPM 的项目。您可以选择升级所有项目或选择部分项目。按空格键进行选择,然后按 Enter 键接受当前选择。

现在,您将有机会提供一个 JSON 文件来定义运行配置。定义了所有值的示例运行配置文件如下:
{
"upgrade": {
"settings": {
"cpm": {
"convertProjectsToSdkStyle": false,
"includeWebProjects": false,
"useTransitivePinning": true,
"rootPath": "somePath"
}
}
}
}
接下来系统会询问您是否也想升级到 SDK 样式。

如果您对此问题选择“是”,系统会询问您是否希望在此次升级中包含 Web 项目。再次值得注意的是,我们建议您单独升级这些 Web 项目。最后,系统会询问您是否希望启用传递固定,在大多数情况下建议启用传递固定。

完成所有这些选择后,按 Enter 键。系统将询问您是否要继续升级。输入“y”并按 Enter 键以使用当前选择运行升级助手工具。
了解文件更改
当您在 Visual Studio 中单击“升级”或按 Enter 键运行 .NET CLI 工具时,带有包引用的项目将被修改,并且您的解决方案或选定的项目现在将使用 NuGet Central 包管理。
如果您查看项目的 Git 更改,您可以看到该工具所做的文件更改。

您会注意到 .csproj 文件中的版本属性和 package.config 程序集引用已被删除。该工具现在可以查找存储库中项目导入的所有目标中的所有 PackageReference。所有包版本都已合并到 Directory.packages.props 中。

包发现
作为升级助手最新改进的一部分,我们改变了在各种升级中发现和修改项目依赖项的方式。以前,升级会直接在项目文件中修改 NuGet 包引用、程序集引用和项目引用。现在,这些内容是在定义它们的位置进行编辑,而不是直接编辑项目文件,即如果在显式导入的目标文件或隐式导入(如 Directory.Build.props、Directory.Build.targets 或 Directory.Packages.props)中定义了 PackageReference,我们将在那里进行修改。
改进的可访问性
除了更新 CPM 支持和包发现之外,我们还改进了工具及其报告的可访问性。Visual Studio 工具及其生成的 HTML 报告都提高了可访问性评级,并且与屏幕阅读器和其他辅助技术的兼容性更高。
对受支持的 Visual Studio 版本的安全相关更改
升级助手支持的最低 VS 版本现在是 17.3(以前是 17.1)。由于 Visual Studio 的变化,我们建议更新低于 17.3 的版本以保持安全。因此,升级助手不再支持低于 17.3 的 Visual Studio 版本。
反馈
请通过直接在 .NET 升级助手存储库中提交问题或通过 Visual Studio 反馈渠道(在 Visual Studio 中选择帮助|发送反馈)向我们提供反馈或报告任何问题。请在标题中提及“.NET 升级助手”,以便将其快速路由到我们的团队。我们感谢您的意见,并希望为您构建最好的工具!
原文链接
.NET Upgrade Assistant Now Supports Upgrading to Centralized Package Mangement

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
如有任何疑问,请与我联系 (MingsonZheng@outlook.com)
【译】.NET 升级助手现在支持升级到集中式包管理的更多相关文章
- SpringBoot初始教程之Redis集中式Session管理
1.介绍 有关Session的管理方式这里就不再进行讨论,目前无非就是三种单机Session(基于单机内存,无法部署多台机器).基于Cookie(安全性差).基于全局的统一Session管理(redi ...
- HDFS集中式缓存管理(Centralized Cache Management)
Hadoop从2.3.0版本号開始支持HDFS缓存机制,HDFS同意用户将一部分文件夹或文件缓存在HDFS其中.NameNode会通知拥有相应块的DataNodes将其缓存在DataNode的内存其中 ...
- 中小型研发团队架构实践七:集中式日志ELK
一.集中式日志 日志可分为系统日志.应用日志以及业务日志,系统日志给运维人员使用,应用日志给研发人员使用,业务日志给业务操作人员使用.我们这里主要讲解应用日志,通过应用日志来了解应用的信息和状态,以及 ...
- linux进阶之SVN集中式版本控制系统篇
代码上线--版本控制系统 SVN 集中式版本控制系统 git 分布式版本控制系统 SVN是subversion的缩写,即版本控制系统,是一个开放 ...
- 使用kubeadm平滑地升级kubenetes集群(v1.10.2到v1.10.3)
写在前面 kubernetes是目前最炙手火热的容器管理.调度.编排平台,不仅拥有全面的生态系统,而且还开源.开放自治,谁贡献的多,谁的话语权就大,云提供商都有专门的工程师来从事kubernetes开 ...
- 玩转nodeJS系列:使用原生API实现简单灵活高效的路由功能(支持nodeJs单机集群),nodeJS本就应该这样轻快
前言: 使用nodeJS原生API实现快速灵活路由,方便与其他库/框架进行整合: 1.原生API,简洁高效的轻度封装,加速路由解析,nodeJS本就应该这样轻快 2.不包含任何第三方库/框架,可以灵活 ...
- 装python package 时,conda提示会升级python2到python3,那可能是你的windows不支持py2env下的此包。
装python package 时,conda提示会升级python2到python3, 那可能是你的windows不支持py2env下的此包.比如:win 下,tensorflow就不支持py2的环 ...
- 升级 Elasticsearch 集群数量实战记录
搜索引擎 升级 Elasticsearch 集群数量实战记录 现在线上有一个elasticsearch集群搜索服务有三台elasticsearch实例(es1.es2.es3),打算将其升级为5台(增 ...
- mtools 是由MongoDB 官方工程师实现的一套工具集,可以很快速的日志查询分析、统计功能,此外还支持本地集群部署管理.
mtools 是由MongoDB 官方工程师实现的一套工具集,可以很快速的日志查询分析.统计功能,此外还支持本地集群部署管理 https://www.cnblogs.com/littleatp/p/9 ...
- logstash7.3版本不支持从redis集群中拉取数据
filebeat可以把收集到的日志传输到redis集群中,但是logstash如何从从redis集群中拉取数据的呢? ogstash使用的是7.3版本 经过查看官网文档,发现logstash7.3版本 ...
随机推荐
- Redis中的分布式锁(步步为营)
分布式锁 概述 分布式锁指的是,所有服务中的所有线程都去获取同一把锁,但只有一个线程可以成功的获得锁,其他没有获得锁的线程必须全部等待,直到持有锁的线程释放锁. 分布式锁是可以跨越多个实例,多个进程的 ...
- JAVA WEB和Tomcat各组件概念
概述 本篇文章是https://juejin.cn/post/7055306172265414663,这篇文章的再总结,剔除了与Java安全研究没太大关系的内容,对JAVAWEB中的Servlet.F ...
- 使用IDEA一键发布应用
1.编辑Dockerfile from java:8 WORKDIR /usr/local ADD ./target/jpaas-bpm.jar . CMD ["java",&qu ...
- DA14531芯片固件逆向系列(3)- BLE收包流程分析及漏洞挖掘思路分享
文章首发于 https://xz.aliyun.com/t/9194 前言 本文介绍定位和分析DA14531收包流程的方法,并提供简单的BLE协议漏洞挖掘思路. 定位收包函数 通过查看DA14531的 ...
- docker安装Nginx并运行vue3前端
Docker安装Nginx #获取Nginx docker pull nginx #查端口 netstat -ntlp #建本地目录 mkdir -p /home/nginx/www /home/ng ...
- openEuler欧拉安装Gitlab
1. 安装GitLab wget https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh sud ...
- HLS视频加密,让您的视频内容更安全!
** 背景介绍** HLS视频加密是一种基于HTTP Live Streaming(HLS)协议的加密技术.它的核心思想是将视频切片进行加密处理,在客户端播放时需要先获取解密密钥才能正常偶发.通过这种 ...
- Java 后端搞 MVC 是邪路
前两天和朋友讨论,我展示了一番 d2js,朋友有点纳闷,你这个是直接操作数据库,不是违背了 MVC 设计思想吗? 经常讨论有助于刺激思维.这次本人忽然进入了状态,终于意识到问题所在! 现在的系统叠床架 ...
- 【微软】微软程序注册(zfile自建API)
Zfile支持设置自己的回调地址,怎么设置呢? 参考:https://docs.zfile.vip/advanced/onedrive-api/ 上面文档写的很清楚了,我提醒两点 1.进入 https ...
- Qt/C++离线读取全国任意经纬度高程海拔值/无任何依赖/纯原创代码解析
一.前言说明 做地图开发会遇到一个常规需求,就是获取当前经纬度对应的海拔高度,也叫做高程值,很遗憾各大地图厂商都未提供接口获取,可能是有明文规定,不能地图中提供对应的海拔高度值,于是需要另想他法,尽管 ...