【译】.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版本 ...
随机推荐
- ubuntu 下做反向代理给hyperf使用
使用hyperf的时候发现它监听9501端口,然后这样需要ip+port方式去访问,但是这样对用户而言有点不太友好,如果我们还有域名,可以做一个反向代理避免端口直接写出来. 找了找网上别人写的例子,感 ...
- OpenMM的安装与使用
技术背景 OpenMM是一款基于Python开发的开源分子动力学模拟软件,这几年因为AlphaFold的缘故,使得这个软件的热度有了不少提升.并且可以使用GPU硬件加速,所以性能上也不赖.这里介绍一下 ...
- Docker registry cli 私有仓库镜像查询、删除、上传、下载 shell
#Docker官方私有仓库registry#官方只提供了API接口,不方便使用,就写了个shell#docker-registry安装配置http://www.cnblogs.com/elvi/p/8 ...
- 基于antlr的表达式解析器——函数生成(通过freemarker)
第一步.新建一个模板文件以.ftl结尾. Max.ftl /* * Copyright 2002-2007 Robert Breidecker. * * Licensed under the Apac ...
- Nuxt.js 应用中的 webpack:done 事件钩子
title: Nuxt.js 应用中的 webpack:done 事件钩子 date: 2024/11/26 updated: 2024/11/26 author: cmdragon excerpt: ...
- Litctf2024-郑州轻工业大学第二届ctf-校内赛道wp
战队:怎落笔都不对 最终成绩校内第4 MISC 1. 盯帧珍珠 打开文件发现是一个图片,放入 010 查看得文件头是 gif 格式 改为gif后缀得到一个GIF图,在下面这个网站分解,即可得到flag ...
- Vue.js 其他指令
1.ref标识 通过给HTML标签或者组件标签设定ref属性,根据他的属性值来访问这个HTML元素或者组件 语法:this.$refs.属性值 //为p标签设置ref属性 <div id=&qu ...
- 青少年学习C++参考视频
09C++选择结构(3) 第20课 初识算法 第21课 3个数排序 第22课 随机函数rand 第23课 if语句的应用 第24课 bug与debug 10C++选择结构(4) 第25课 成绩等级 第 ...
- Member not found: ’packageRoot’ in Flutter
path/flutter/.pub-cache/hosted/pub.dartlang.org/platform-3.0.0/ lib/src/interface/local_platform.dar ...
- gdb 初次运行卡住 Starting program: [New Thread 0x1103 of process 843]
安装完后gdb一般会有提示: ==> gdbgdb requires special privileges to access Mach ports.You will need to codes ...