PackageSmith
NuGet 程序包版本就显示在写它的地方:每个程序包行后显示最新版本,悬停即可查看完整历史,使用 Ctrl+. 更新——易受攻击或已弃用的程序包在生成之前就会被标记出来。
免费 · Visual Studio 2022 和 2026 · 14 种界面语言 · 无遥测
为什么选择 PackageSmith

过时的程序包一目了然
无需打开 NuGet 窗口就能知道哪些已过时:每个程序包后都显示最新版本,补丁为绿色,次版本为黄色,主版本为橙色。
安全更新优先
已知漏洞直接在该行以红色显示,并给出修复它的最近版本;已弃用的程序包会给出替代程序包。
只用你的源
版本来自 NuGet.config 中的程序包源——nuget.org 或公司源。只查询程序包名称和版本,不发送任何关于你或你的项目的信息。
免费,没有附加条件
没有订阅、没有“Pro”版、不收集数据,也不会在“输出”窗口或启动时显示消息。我们唯一的请求是:在你用过一段时间之后,到 Marketplace 给个评分。支持 Visual Studio 2022 和 2026,x64 和 ARM64。
功能
- 每个程序包后显示最新版本,按更新幅度着色;已是最新的程序包显示淡色的
✓ 最新。 - 易受攻击和已弃用的程序包:已知漏洞的严重性,以及已弃用程序包的替代程序包。
- 悬停卡片:说明、每个较新版本系列的最新版本及其日期,一键即可更新。
- 使用 Ctrl+. 更新:更新到最新的补丁、次版本或主版本,或在各自主版本内更新文件中的所有程序包——一次编辑,一次撤消。
- 所有程序包文件:
.csproj、.vbproj、.fsproj、Directory.Packages.props(中央包管理)、.props、.targets和packages.config;Version="$(ContosoVersion)"会从文件中解析。 - 来自 NuGet.config 的程序包源,答复在会话之间缓存,还有脱机开关。
行尾的版本
在每个 PackageReference、PackageVersion 和 package 行后:程序包已是最新时不显示醒目的内容,否则以更新幅度的颜色显示最新版本。不会提供已取消列出的版本;除非设置另有指定,预发行版只提供给已在使用预发行版的程序包。

| 行后显示 | 含义 |
|---|---|
| ✓ 最新 | 程序包已是最新版本。 |
| → 8.0.4 补丁 | 只有第三个数字变化:修复。 |
| → 6.5.1 次版本 | 第二个数字变化:新功能,无意引入中断性变更。 |
| → 5.0.2 主版本 | 第一个数字变化:中断性变更出现在这里。 |
| ⚠ 易受攻击 · 高 | 正在使用的版本存在已知安全漏洞,并显示其严重性。 |
| 已弃用 · 改用 … | 作者已弃用该程序包,并指明了替代程序包。 |
悬停卡片
将指针停在代码中的版本或行后的文字上:卡片会显示说明、每个较新版本系列的最新版本(对于 8.0.0 的程序包为 10.0.13、9.0.10、8.0.21)及其日期、还有多少个更新的版本、漏洞以及不含该漏洞的最近更新,还有 更新到 …、在 nuget.org 上打开 和 项目网站 按钮。单击列表中的任一版本即可设置该版本。

使用 Ctrl+. 更新
将插入点放在程序包行上,按 Ctrl+.:最新的补丁、最新的次版本和最新的主版本会分别提供,因此安全更新总是只需一个按键。在主版本内更新此文件中的所有程序包 会将每个程序包更新到同一主版本内的最新版本——是否升级主版本仍需单独决定。来自属性($(ContosoVersion))的版本会在文件中定义该属性的位置更新。文件的编辑方式与手动更改相同:可以撤消,Visual Studio 会照常还原程序包。

设置
工具 → 选项 → SmithWorks → PackageSmith。每个选项都有说明。
| 选项 | 默认值 |
|---|---|
| 在每个程序包后显示最新版本 | 开 |
| 用“✓ 最新”标记已是最新的程序包 | 开 |
| 为所有程序包提供预发行版 | 关 |
| 标记在源中找不到的程序包 | 关 |
| 标记易受攻击和已弃用的程序包 | 开 |
| 悬停时显示卡片 | 开 |
| 使用 Ctrl+. 更新 | 开 |
| 重新检查间隔 | 1 小时 |
| 脱机 | 关 |
| 请求在 Marketplace 上评分 | 开 |
设置保存在 %LocalAppData%\PackageSmith 中,缓存的版本也保存在旁边。

常见问题
PackageSmith 会发送数据吗?
它会向你的程序包源(来自 NuGet.config;没有时为 nuget.org)查询文件中程序包的版本——与 Visual Studio 还原程序包时发出的请求相同。除此之外不发送任何内容:没有遥测,没有项目名称,没有关于你的任何信息。打开 脱机 后,完全不会发出请求。
公司源需要登录。能用吗?
暂时不能:需要凭据的源会被跳过,其程序包不显示任何内容——不会显示错误的答复。公共 v3 源(nuget.org、开放的公司源)可以使用。
为什么有些程序包后面什么都没有?
当版本是范围或通配符([1.0,2.0)、13.*)、属性在另一个文件中定义,或没有源答复时,不显示任何内容。打开 标记在源中找不到的程序包,即可看到所有源都答复没有的程序包。
支持中央包管理吗?
支持:版本显示在 Directory.Packages.props 中每个 PackageVersion 之后,项目中的 VersionOverride 也会显示。
更新会还原程序包吗?
PackageSmith 只编辑文件。更改后由 Visual Studio 还原程序包,就像手动编辑版本时一样。
能与 LensSmith 一起使用吗?
可以。两者都在行尾显示内容,因此共享这一空间:版本在前,LensSmith 的 NuGet 警告在后。
在哪里报告问题或提出功能建议?
请在 GitHub 上的 Feedback 仓库中提交 issue——那里有用于报告错误和提出建议的表单(如有私密名称,请先替换)。也可以使用 Marketplace 上的 Q&A 选项卡。
更新日志
1.0.1
- 在扩展确实有用之后,只请求一次在 Marketplace 上评分——带有“以后再说”和“不再询问”,也可以在选项中关闭。
1.0.0
- 首个公开版本。