写点什么

微软发布 Visual Studio 扩展 NuGetSolver,简化 NuGet 依赖项冲突解决过程

作者:Almir Vuk

  • 2024-02-17
    北京
  • 本文字数:1204 字

    阅读完需:约 4 分钟

微软发布 Visual Studio 扩展 NuGetSolver,简化 NuGet 依赖项冲突解决过程

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

最近,微软发布了一款名为 NuGetSolver 的实验性工具。这个 Visual Studio 扩展是与微软研究院合作创建的,旨在简化 Visual Studio 项目中 NuGet 依赖项冲突的解决过程。该扩展高效地解决了常见的 NuGet 错误和警告,帮助开发者在 Visual Studio IDE 中提高工作效率。


据报道,该工具有效地解决了最常见的 NuGet 错误和警告,如依赖包之间的 约束(NU1107)、依赖包不包含任何与项目兼容的资源(NU1202)、检测到的包降级(NU1605),以及当资源可能不是 100% 兼容时的警告(NU1701)。


要开始使用 NuGetSolver,开发者可以从 Visual Studio Marketplace 下载这个名为 NuGetSolver 的扩展。这个实验性扩展通过分析所有依赖关系并提供智能和自动化建议来解决 NuGet 依赖冲突的问题。


用户可以通过在 Solution Explorer 中右键单击并选择 Resolve Dependency Conflicts 选项来访问该工具。据报道,该工具会通过快速计算来确定可能的建议,并显示当前状态与建议状态之间的差异。用户还可以切换到 Show only changes 来查看完整的依赖列表。



(在 Visual Studio 中使用 NuGetSolver,来源:Microsoft DevBlogs)


默认情况下,该工具建议使用稳定版本,如果需要,还可以选择包含预发布版本。原博文透露,如果开发人员接受推荐的建议,应选择 Apply fix 选项,然后重新构建解决方案以验证解决方案。此外,作者还指出:


建议在你的存储库中启用源代码控制,以便在必要时可以轻松恢复 NuGetSolver 所做的更改。


此外,文中还指出,如果解决方案当前没有依赖冲突,开发者仍然可以运行该工具来升级依赖项,尽量减少更改。这比使用 NuGet 包管理器一个一个地升级包更快速、更可靠,尤其是在面对其他依赖约束时。


该工具需要 Visual Studio 2022 和网络连接才能正常使用。它从 nuget.org 检索可用的包版本,并从提供的缓存托管服务下载缓存数据库文件。


不过,在使用时要注意一些使用建议和已知的限制。目前仅支持 nuget.org 源,不支持多源和本地源。虽然尚未完全支持多目标框架,但该工具可能会为某些目标框架生成修复方案。如果使用自定义 MSBuild 逻辑进行版本设置,Apply Fix 功能可能无法完全支持更新版本。


需要注意的是,当切换到 Include prerelease 选项时,NuGetSolver 在建议计算中可能不会考虑所有可用的预览版本。对于使用packages.config或 legacy-sdk 样式的项目,该工具可以生成建议,但无法直接应用修复,需要开发者手动修复。


虽然 NuGetSolver 可以解决编译时依赖冲突,但仍可能出现运行时错误。此外,该工具不验证建议的版本是否存在已知漏洞,因此建议开发者使用 NuGet 中的审计功能来解决此问题。


总的来说,NuGetSolver 对于希望在 Visual Studio 中简化 NuGet 依赖管理的开发者来说非常宝贵的一款工具。它通过自动化冲突解决并提供依赖图的可视化表示,提高了效率,让开发人员能够专注于构建出色的应用程序。


查看英文原文

https://www.infoq.com/news/2024/01/introducing-nuget-solver/

2024-02-17 08:0012463

评论

发布
暂无评论
发现更多内容

了解OAuth2.0

环信

官方活动 | 盘点2020有奖征文

InfoQ写作社区官方

盘点2020 热门活动

三分钟看懂新一代.Net Core3.1工作流引擎平台

Philips

敏捷开发 工作流

华为云亮相QCon2020深圳站,带你体会大厂的云原生玩法与秘诀

华为云开发者联盟

专家 华为云 深圳

区块链加速产业革命,打造畜禽养殖业发展新途径

CECBC

养殖业

SGY奇点交易所系统软件APP开发

系统开发

让垃圾分类开发“极快致简”的好物件,零基础的开发小白也能轻松驾驭它!

华为云开发者联盟

数据 分类

Spark-submit执行流程,了解一下

华为云开发者联盟

spark 技术 流程

LeetCode题解:515. 在每个树行中找最大值,DFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

使用LiteOS Studio图形化查看LiteOS在STM32上运行的奥秘

华为云开发者联盟

LiteOS 脚本 语言

多国探路数字货币

CECBC

数字货币

分布式事务框架 seata-golang 通信模型详解

阿里巴巴云原生

数据库 微服务 云原生 Go 语言

如何判断一个区块链项目是否优质?

CECBC

开源

我哭了!Centos6停止更新只能切换7,哪些习惯也需要切换

996小迁

Java 架构 面试 Centos6

构师训练营第八周学习笔记

李日盛

笔记

一周信创舆情观察(11.30~12.6)

统小信uos

Serverless 如何落地?揭秘阿里核心业务大规模落地实现

阿里巴巴云原生

阿里巴巴 阿里云 Serverless 开发者 云原生

动态高并发时为什么推荐ReentrantLock而不是Synchronized?

moon聊技术

JVM 并发 synchronized ReentrantLock 锁升级

装机必备:借用IDM实现百度云高速下载

懒得勤快

训练营第八周作业

大脸猫

极客大学架构师训练营

什么是802.11ax(Wi-Fi 6)

【得物技术】MySQL多表关联同步到ES的实践

得物技术

MySQL 原理 配置 ES 多表join

云上的移动性能测试平台

移动研发平台EMAS

阿里云 测试 移动研发平台

训练营第八周总结

大脸猫

极客大学架构师训练营

海阔天空的游戏出海,HMS生态提供的风帆与通路

脑极体

话题讨论 | 程序员自己电脑中毒是甚么体验?

xcbeyond

话题讨论

我哭了!Centos6停止更新只能切换7,哪些习惯也需要切换

小Q

Java Linux centos 学习 面试

《迅雷链精品课》第十二课:PoW共识算法

迅雷链

区块链

最简单的Go Dockerfile编写姿势,没有之一!

万俊峰Kevin

Docker Dockerfile Go 语言

DolphinDB与Elasticserach在金融数据集上的性能对比测试

DolphinDB

数据处理 金融 时序数据库 tsdb DolphinDB

滴滴DoKit-功能介绍之文件同步助手

工具 文件 DoKit

微软发布 Visual Studio 扩展 NuGetSolver,简化 NuGet 依赖项冲突解决过程_微软_InfoQ精选文章