原文 | 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.propsDirectory.Build.targetsDirectory.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 升级助手现在支持升级到集中式包管理的更多相关文章

  1. SpringBoot初始教程之Redis集中式Session管理

    1.介绍 有关Session的管理方式这里就不再进行讨论,目前无非就是三种单机Session(基于单机内存,无法部署多台机器).基于Cookie(安全性差).基于全局的统一Session管理(redi ...

  2. HDFS集中式缓存管理(Centralized Cache Management)

    Hadoop从2.3.0版本号開始支持HDFS缓存机制,HDFS同意用户将一部分文件夹或文件缓存在HDFS其中.NameNode会通知拥有相应块的DataNodes将其缓存在DataNode的内存其中 ...

  3. 中小型研发团队架构实践七:集中式日志ELK

    一.集中式日志 日志可分为系统日志.应用日志以及业务日志,系统日志给运维人员使用,应用日志给研发人员使用,业务日志给业务操作人员使用.我们这里主要讲解应用日志,通过应用日志来了解应用的信息和状态,以及 ...

  4. linux进阶之SVN集中式版本控制系统篇

    代码上线--版本控制系统 SVN             集中式版本控制系统 git                 分布式版本控制系统 SVN是subversion的缩写,即版本控制系统,是一个开放 ...

  5. 使用kubeadm平滑地升级kubenetes集群(v1.10.2到v1.10.3)

    写在前面 kubernetes是目前最炙手火热的容器管理.调度.编排平台,不仅拥有全面的生态系统,而且还开源.开放自治,谁贡献的多,谁的话语权就大,云提供商都有专门的工程师来从事kubernetes开 ...

  6. 玩转nodeJS系列:使用原生API实现简单灵活高效的路由功能(支持nodeJs单机集群),nodeJS本就应该这样轻快

    前言: 使用nodeJS原生API实现快速灵活路由,方便与其他库/框架进行整合: 1.原生API,简洁高效的轻度封装,加速路由解析,nodeJS本就应该这样轻快 2.不包含任何第三方库/框架,可以灵活 ...

  7. 装python package 时,conda提示会升级python2到python3,那可能是你的windows不支持py2env下的此包。

    装python package 时,conda提示会升级python2到python3, 那可能是你的windows不支持py2env下的此包.比如:win 下,tensorflow就不支持py2的环 ...

  8. 升级 Elasticsearch 集群数量实战记录

    搜索引擎 升级 Elasticsearch 集群数量实战记录 现在线上有一个elasticsearch集群搜索服务有三台elasticsearch实例(es1.es2.es3),打算将其升级为5台(增 ...

  9. mtools 是由MongoDB 官方工程师实现的一套工具集,可以很快速的日志查询分析、统计功能,此外还支持本地集群部署管理.

    mtools 是由MongoDB 官方工程师实现的一套工具集,可以很快速的日志查询分析.统计功能,此外还支持本地集群部署管理 https://www.cnblogs.com/littleatp/p/9 ...

  10. logstash7.3版本不支持从redis集群中拉取数据

    filebeat可以把收集到的日志传输到redis集群中,但是logstash如何从从redis集群中拉取数据的呢? ogstash使用的是7.3版本 经过查看官网文档,发现logstash7.3版本 ...

随机推荐

  1. 2023NOIP A层联测26 T4 abstract

    2023NOIP A层联测26 T4 abstract 乱证明求性质的光速幂优化题. 思路 对于每一个节点,到该节点的子树内的叶子节点的路径中(包括路径上的点),出现的值只有 \(k\times(\l ...

  2. WSL2 使用 code . 命令打开文件夹时,出现 "Unable to establish SSL connection. ERROR: Failed to download..."

    1. 背景 在 wsl2 里开发一个小项目,之前一直使用功能正常. 今天按以往的流程(打开 wsl2(ubuntu) 终端,进入到指定文件夹目录下,输入 code . 命令,在 vscode 中打开该 ...

  3. Java并发显式锁和显式条件队列

    一 显式锁 在类中利用synchronized修饰的方法或者this代码块,均使用的是类的实例锁或者类的锁.这些锁都称为内置锁. 可以利用显式锁进行协调对象的访问.即ReentrantLock.这是一 ...

  4. 重新使用Java的七个理由

    译者注:此文系作者于2011年7月11发表于OnJava O'Reily正在庆祝Java7的发布,以及7月25日到27日即将在波兰开展的 OSCON Java 大会. Java宣告回归了,同胞们.当然 ...

  5. re模块 函数模式详解

    re模块 python爬虫过程中,实现页面元素解析的方法很多,正则解析只是其中之一,常见的还有BeautifulSoup和lxml,它们都支持网页HTML元素解析,re模块提供了强大的正则表达式功能 ...

  6. Git commit注释规范

    指定规范的提交格式, 方便后期版本的回滚与记录的查询 格式规范: <type>(<scope>): <subject> // 空一行 <body> 范例 ...

  7. 升级Linux内核版本

    ```shell# 查看内核版本,jw版本ceph默认format=2, 2.x 及之前的的内核版本需手动调整format=1# 4.x之前要关闭object-map fast-diff deep-f ...

  8. 使用阿里的ARTHAS跟踪方法耗时

    使用命令跟踪一个方法的耗时 在arthas 命令行下输入命令 trace 类全路径 监控的方法 trace com.redxun.bpm.core.service.BpmInstServiceImpl ...

  9. MarkDown文档的编写

    MarkDown的基本语法 MarkDown的标题语法  通过#进行创建标题,#的数量控制标题的级别 MarkDown的段落语法  通过空白行将一行或者多行文本进行分隔 MarkDown的强调语法 粗 ...

  10. 《Django 5 By Example》阅读笔记:p521-p542

    <Django 5 By Example>学习第 18 天,p521-p542 总结,总计 22 页. 一.技术总结 1.django-parler django-parler 用于 mo ...