Stuart Lang
banner
stu.dev
Stuart Lang
@stu.dev
Microsoft MVP. Co-organiser of .NET South West and DDD South West. Loves learning and sharing, particularly anything @dotnet. He/Him. Blogs at http://stu.dev
@stuartblang (to help those migrating from Twitter)
I'm also thinking about an option that plugs into nuget, there is the concept of a "NuGet Package Download Plugin", which might give another way to "listen" to download events
October 2, 2025 at 2:19 PM
To summarize, unused != unneeded

Not sure if this is intentional @chethusk.bsky.social
October 2, 2025 at 1:08 PM
So with this approach it then needs to redownload the unused packages on the next build, then the following build it will clear them.

I can't distinguish between packages that will be downloaded but not used, vs old packages (if that makes sense)
October 2, 2025 at 1:01 PM
So what's happening in numbers:
* start with no cache
* during the build we download 420 package versions
* upload that to the cache
* same build - restore cache
* touch all 420 package metadata with last weeks timestamp
* build
* only 319 metadata files updated last read time
* I delete 101 pkgs
October 2, 2025 at 12:59 PM
I've been playing with this in CI and am getting some odd results, it seems to be _mostly_ working. Our GHA runners have relatime set on the mount we use, and this also makes things more confusing, so I first reset all f the atimes to 7 days earlier before starting the build
October 2, 2025 at 10:24 AM
the http-cache is only valid up to 30 mins, so isn't much use in CI scenarios. I think it's just a missing part of the story.

I know that @terrajobst.net played around with the idea of "dotnet nuget gc" which is sort of what's needed here:
github.com/terrajobst/d...
GitHub - terrajobst/dotnet-nuget-gc
Contribute to terrajobst/dotnet-nuget-gc development by creating an account on GitHub.
github.com
September 30, 2025 at 3:00 PM
The problem is you need to restore the cache into NUGET_PACKAGES, but at the end of it you want to say "now copy the contents of NUGET_PACKAGES, but _only_ the packages that were actually used"
@chethusk.bsky.social this should be a thing
September 30, 2025 at 2:56 PM
It happens when you cache the global package cache directory as at the end of each build, there's no eviction of older package versions that weren't used. It's an oversight IMO
September 30, 2025 at 12:28 AM
Looks interesting, my goto for this these days is SpreadCheetah for performance reasons:
github.com/sveinungf/sp...

We used ClosedXML for some finance domain stuff, and for large spreadsheets these libraries cannot handle large-ish spreadsheets (hundreds of thousands of rows)
GitHub - sveinungf/spreadcheetah: SpreadCheetah is a high-performance .NET library for generating spreadsheet (Microsoft Excel XLSX) files.
SpreadCheetah is a high-performance .NET library for generating spreadsheet (Microsoft Excel XLSX) files. - sveinungf/spreadcheetah
github.com
September 19, 2025 at 1:00 PM
It passes in xunit v3, and fails in xunit v2 (and is non-deterministic, but in practice always fails)
September 18, 2025 at 11:35 AM
We have a winner!
September 18, 2025 at 11:33 AM
I don't think it will be feasible to get Windows → macOS to work, but the rest should thanks to `zig cc`
github.com/slang25/Publ...
Merge pull request #13 from slang25/copilot/fix-c3156ca5-4e36-4713-a8… · slang25/PublishAotCross@29da35b
NuGet package to help you cross-compile Native AOT to different OSes/architectures - Merge pull request #13 from slang25/copilot/fix-c3156ca5-4e36-4713-a8… · slang25/PublishAotCross@29da35b
github.com
September 10, 2025 at 3:44 PM
Thanks, Ido the same thing at work, but it's a little messy in that a different team look after the macOS runners, so I dream about having a single publish from one machine.

I've been vibe coding this into existence by continuing the work of Michal Strehovský here: github.com/slang25/Publ...
GitHub - slang25/PublishAotCross: NuGet package to help you cross-compile Native AOT to different OSes/architectures
NuGet package to help you cross-compile Native AOT to different OSes/architectures - slang25/PublishAotCross
github.com
September 10, 2025 at 3:42 PM
it faster
September 10, 2025 at 3:26 PM
Gotta try zig, it's the new hotness
August 14, 2025 at 7:43 PM
We'll be adopting it shortly at work 🙂 we thought initially that HybridCache would work for us, but we actually really want the features in FusionCache. In particular the ability to invalidate entries and it actually work (via a backplane) turns out to be essential for us.
July 28, 2025 at 9:56 AM
I work in a place that currently enforces this on every commit, and when I try to discuss removing this constraint people start referring to it as a "good practice", I feel like I'm going crazy!
July 23, 2025 at 10:25 AM