【译】.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版本 ...
随机推荐
- mysql8可以创建虚拟列作为公式映射字段
普通的表 加个字段 此时再查 想改这个虚拟字段? 没门,他不能被修改.只能改那个被映射的原字段 我们看看表结构定义 好了,明白了,你就是个影分身!
- TreeMap源码分析——基础分析(基于JDK1.6)
常见的数据结构有数组.链表,还有一种结构也很常见,那就是树.前面介绍的集合类有基于数组的ArrayList,有基于链表的LinkedList,还有链表和数组结合的HashMap,今天介绍基于树的Tre ...
- 基于Docker搭建PHP开发环境
Docker 是这几年非常火的一项技术,作为一名软件开发人员,应该及时的接触和掌握. 镜像加速: 可以在阿里云上免费的获取,然后进行配置即可使用.阿里云 Docker 加速器,没有阿里云账号注册一个即 ...
- 记一次 .NET某hdp智能柜系统 卡死分析
一:背景 1. 讲故事 停了一个月时间没有更新博客了,主要是这段时间有些许事情导致心神不宁,我这个人也比较浮躁所以无法潜心修炼,事情如下: 被狗咬了 也不知道是不是出门没看黄历,在小区门口店里买烟,被 ...
- 移动端PDF阅读器重排版效果对比-小白PDF阅读器与KOReader重排效果对比
PDF是一种跨操作系统平台的电子文件格式,它能在各种不同的平台上以相同的版式显示.很多扫描书籍或者电子书籍都会采用PDF格式存储.但是移动端由于屏幕的限制,以原版展示PDF会导致画面缩放严重,影响阅读 ...
- 使用 JsonSchema 校验 JSON数据
有时候JSON 数据格式需要校验是否合法,我们可以使用 JsonSchema 来校验数据是否合法. 引入 pom.xml https://json-schema.org/ <dependency ...
- 药企如何实现ERP系统与CRM系统的整合
ERP系统与CRM系统整合的意义深远,对于企业尤其是药企来说,这种整合能够带来多方面的优势和改进.可以确保企业内部数据的一致性和准确性:优化业务流程.增强决策支持:从而提高企业的整体运营效率和市场竞争 ...
- 谈谈Python中的接口与抽象基类
接触Python比较早的朋友可能都有这样的体会,Python语言虽然也支持面向对象的编程方式, 但是,不像那些纯面向对象的语言(比如Java和.NET)那样严格和规范. 随着项目的规模逐步扩大之后,想 ...
- Advanced .NET Remoting: 第 8 章 创建连接器
第 8 章 创建连接器 上一章向您展示了各种类型的连接器,以及它们对于请求的同步和异步处理过程.到目前为止,我一直忽略的一个最为重要的步骤是:初始化连接器和连接器链.连接器通常既不是直接待代码中创建, ...
- 在 .NET 下使用 Pdfium 渲染和打印 PDF
在 .NET 下使用 Pdfium 渲染和打印 PDF 大家可能已经看到这条 新闻,Google最近又新推出一个开源项目,名叫 PDFium,将成为Chrome浏览器的PDF渲染引擎组件.与已有的开源 ...