写点什么

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

作者:Almir Vuk

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

    阅读完需:约 4 分钟

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

最近,微软发布了一款名为 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:0016507

评论

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

元宇宙、区块链和潘家园

脑极体

今日谈:BoltDB数据库,一款纯Go实现的KV数据库

Regan Yue

Go 语言 11月日更

不用找了,这本书帮你完全搞定Spring Cloud Alibaba

胡弦(关注公众号架构随笔录)

分布式架构 spring cloud alibaba

Serverless 下的微服务实践

阿里巴巴云原生

阿里云 Serverless 微服务 云原生 SAE

Python中的控制流:break和continue

Peter

Python 控制流

一份数据的6种Plotly画法

Peter

数据分析 可视化

助力政企自动化自然生长,华为WeAutomate RPA是怎么做到的?

【网络安全】这份近200页应急响应文档,帮助了不少安全逆子

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

架构实战营模块6课后作业:小程序电商业务微服务

胡颖

架构实战营

阿里云 EventBridge 事件驱动架构实践

阿里巴巴云原生

阿里云 云原生 事件驱动 事件驱动架构 EventBridge

“零信任”的世界,让女性更安全

脑极体

又谈mysql,面试官问表结构设计要注意啥?

微客鸟窝

MySQL 11月日更

Electron常见问题 48 - Electron 获取本机 MAC 地址

liuzhen007

11月日更

进化政企智能化,华为WeAutomate 3.0重磅发布

网络安全之浏览器端的威胁要塞防御

喀拉峻

网络安全 安全 信息安全

完善Django的MVT框架开发,记得添加路由哦~

老表

Python django web开发 11月日更 博客系统

☕【Java技术指南】「技术盲区」看看线程池是如何回收和维持运作线程的核心技术体系

码界西柚

Java 线程池 11月日更

OpenInfra基金会年度用户调查报告已出炉!OpenInfra软件应用需求激增

用户任务三步法:教你读懂用户

石云升

11月日更 产品创新

Python Qt GUI设计:QMainWindow、QWidget和QDialog窗口类(基础篇—10)

不脱发的程序猿

PyQt GUI设计 QMainWindow QWidget QDialog

18 K8S之存储卷简述

穿过生命散发芬芳

k8s 11月日更

如何设计高性能高可用存储架构

天天向上

架构实战营

linux总结10大危险命令

入门小站

Linux

.NET Core 中对象池(Object Pool)的使用

喵叔

11月日更

虚拟办公、虚拟展会、虚拟偶像,RTE+XR 还能做什么?

声网

人工智能 vr Metaverse

redo Log 的持久化过程

卢卡多多

Redo Log 11月日更

【死磕Java并发】-----Java内存模型之从JMM角度分析DCL

chenssy

11月日更 死磕 Java 死磕 Java 并发

华为发布5G专网集成与边缘DC解决方案2.0,奏响5G toB大合唱

OpenMLDB 11 月份社区会议纪要

第四范式开发者社区

第四范式 开源社区 OpenMLDB 机器学习数据库

在线等比数列项数生成器

入门小站

工具

[Pulsar] Delayed message原理

Zike Yang

Apache Pulsar 11月日更

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