LazowskiAnton · Extensions

PackageSmith

NuGet package versions right where they are written: the newest version after every package line, the whole history on hover, an update with Ctrl+. — and vulnerable or deprecated packages flagged before the build does.

Free · Visual Studio 2022 and 2026 · 14 UI languages · no telemetry

Why PackageSmith

The same project file without and with PackageSmith: the newest versions after the package lines

Outdated at a glance

No need to open the NuGet window to learn what is old: the newest version stands after each package, green for a patch, yellow for a minor, orange for a major.

Safe updates first

A known vulnerability is red right on the line, with the closest version that fixes it; a deprecated package names its replacement.

Your sources only

Versions come from the package sources of your NuGet.config — nuget.org or your company feed. Only package names and versions are asked for; nothing about you or your project is sent.

Free, without strings attached

No subscriptions, no "pro" version, no data collection, no messages in the Output window or at startup. The only thing we will ever ask — after you have used it for a while — is a rating on the Marketplace. Works on Visual Studio 2022 and 2026, x64 and ARM64.

Features

Versions at the end of the line

After every PackageReference, PackageVersion and package line: nothing loud when the package is current, the newest version in the color of the step otherwise. Unlisted versions are never offered; prereleases only to packages that already use one, unless a setting says otherwise.

A Directory.Packages.props file with the newest versions, a vulnerable and a deprecated package
After the lineMeaning
✓ latestThe package is on its newest version.
→ 8.0.4 patchOnly the third number changes: fixes.
→ 6.5.1 minorThe second number changes: new features, no breaking changes intended.
→ 5.0.2 majorThe first number changes: where breaking changes live.
⚠ vulnerable · highThe version in use has a known security vulnerability, with its severity.
deprecated · use …The authors deprecated the package, and name the one to use instead.

A card on hover

Rest the pointer on a version in the code or on the text after the line: the card shows the description, the newest version of every newer line (10.0.13, 9.0.10, 8.0.21 for a package on 8.0.0) with its date, how many more newer ones there are, the vulnerability with the closest update without it, and the buttons Update to …, Open on nuget.org and Project site. A click on any version in the list sets it.

The card of a vulnerable package with the newest version of each line

Update with Ctrl+.

Caret on a package line, Ctrl+.: the newest patch, the newest minor and the newest major are offered separately, so the safe update is always one key away. Update every package in this file within its major version takes each package to its newest version of the same major — majors stay a decision of their own. A version from a property ($(ContosoVersion)) is updated where the file defines it. The file is edited like a manual change: Undo works, and Visual Studio restores the packages as usual.

The light bulb with the patch, minor and major updates of a package

Settings

Tools → Options → SmithWorks → PackageSmith. Every option has a description.

OptionDefault
Show the newest version after each packageon
Mark current packages with "✓ latest"on
Offer prerelease versions to every packageoff
Mark packages not found in your sourcesoff
Flag vulnerable and deprecated packageson
Card on hoveron
Update with Ctrl+.on
Check again after1 hour
Offlineoff
Ask for a rating on the Marketplaceon

Settings are stored in %LocalAppData%\PackageSmith, the cached versions next to them.

PackageSmith options page
The options page.

FAQ

Does PackageSmith send any data?

It asks your package sources (from NuGet.config; nuget.org without one) for the versions of the packages in your files — the same requests Visual Studio makes when it restores them. Nothing else is sent: no telemetry, no project names, nothing about you. With Offline on, no request is made at all.

My company feed needs a login. Does it work?

Not yet: feeds that need credentials are skipped, and their packages stay plain — no wrong answer is shown. Public v3 feeds (nuget.org, open company feeds) work.

Why is there nothing after some packages?

Nothing is written when the version is a range or a wildcard ([1.0,2.0), 13.*), when a property is defined in another file, or when no source answered. Turn on Mark packages not found in your sources to see packages that every source answered it does not have.

Does it work with central package management?

Yes: the versions are shown in Directory.Packages.props after every PackageVersion, and VersionOverride in a project is shown too.

Does the update restore the packages?

PackageSmith only edits the file. Visual Studio restores the packages after the change, as it does when you edit the version by hand.

Does it work together with LensSmith?

Yes. Both write at the end of lines, so they share that space: the version comes first, a NuGet warning from LensSmith after it.

Where do I report a problem or suggest a feature?

Open an issue in the Feedback repository on GitHub — there are forms for bugs and ideas (please change private names). You can also use the Q&A tab on the Marketplace.

Changelog

1.0.1

1.0.0