【译】.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版本 ...
随机推荐
- 奥迪借助Karpenter为关键业务节省63%成本
原文链接: https://aws.amazon.com/cn/solutions/case-studies/audi-efficient-compute-case-study/ 翻译:cloudpi ...
- mysql8创建用户
create user test_user@'%' identified by 'test2022@'; grant all privileges on test.* to test_user@'%' ...
- 使用原生Web开发技术为在线客服系统提供网页版配置工具
升讯威在线客服与营销系统是基于 .net core / WPF 开发的一款在线客服软件,宗旨是: 开放.开源.共享.努力打造 .net 社区的一款优秀开源产品. 背景 随着下载私有化部署的用户越来越多 ...
- 纯HTML5+CSS3实现一棵自己跳舞的树
代码没有多少,也没有用到任何图片,就实现了一棵可以自己跳舞的树.文件组成就简简单单的一个html和一个css html部分并不是很复杂,就是一些空的div,然后加上html模板也就那么十来行代码 最关 ...
- memcached 和 Grails,第 1 部分:安装和使用 memcached
学习 memcached 命令并评估缓存性能 本文是系列文章的第 1 部分,主要介绍 memcached 和 Grails.作者 James Goodwill 将向您介绍开源解决方案 memcache ...
- confd+Nacos实现nginx配置文件管理
场景: 由于公司内部站点保护的需求, 将部分的站点添加白名单, 这边的操作是在nginx配置文件中添加如下代码 allow 127.0.0.1: deny all; 但随之问题也出现了, 需要添加一个 ...
- git针对指定网站设置代理
我们经常要用到各种git地址,比如github.gitee还有自己搭建的git等等. 但是github我们经常拉取和推送代码的时候超时,这时候如果我们搜索会发现大量的文章都是告诉我们设置全局系统代理: ...
- Mybatis【3】-- Mybatis使用工具类读取配置文件以及从属性读取DB信息
代码直接放在Github仓库[https://github.com/Damaer/Mybatis-Learning ],可直接运行,就不占篇幅了. 1.使用工具类获取sqlSession实例对象 在上 ...
- 小白PDF阅读器开发-页面元素分割
以前用手机看PDF格式的电子书时,总感觉非常别扭,PDF格式的电子书在手机上缩放严重,字体太小,想看清楚得来回放大拖动,看书的兴致就在来回缩放拖动间被消耗没了!每次用手机看PDF电子书时就想着得做款能 ...
- BigDecimal数据处理方法总结
前言 BigDecimal是Java编程语言中位于java.math包中的一个类,主要用于进行高精度的十进制数计算.它提供了对任意精度的十进制数进行精确计算的能力,适用于需要保持精度和执行准确计算 ...