mailwal

The 12 .NET packages I still install

Mukesh Murugan

.NET & AI Newsletter · by Mukesh Murugan · 3 min read

If you start a new .NET project today and add the packages you have always used, there is a good chance that one or two of them are no longer free for your company. Over the last year, several of the most popular NuGet packages moved to a commercial license, and one more change starts on November 16.

SPONSORED

When your AI agent remembers an old fact

Say you told your coding agent that your API uses Swagger, and later that you moved to Scalar. Both facts sit in memory, and a plain similarity search sees them as similarly relevant, so the agent can add Swashbuckle right back.

Oracle AI Agent Memory 26.8 fixes this with graph-aware retrieval. The Scalar fact supersedes the Swagger one, the old memory is marked invalid but kept as history, and search returns the current fact with the context of how it changed. Most links are created automatically during extraction.

Install it with pip install oracleagentmemory, or run Oracle's notebook to see the same idea in action. Oracle sponsored this mention.

Or run the notebook to see the same idea in action.

AutoMapper and MediatR became commercial from versions 15 and 13. They are still free if your company makes less than 5 million dollars a year, but above that you need a paid license. MassTransit is commercial from version 9, and FluentAssertions from version 8. In all four cases, the older versions you already use stay under their old license, which is why most teams only notice the change when they update to the next major version.

Polly is a little different, because its license has not changed. From November 16, the Polly project asks organizations that earn at least 20,000 US dollars from a product that uses Polly to pay a maintenance fee of 20 US dollars a month. Even if you never installed Polly yourself, Microsoft's HTTP resilience package brings it in as a dependency, so it may already be in your project.

When I put together my list of the 12 packages I install in new .NET 10 projects, I only picked packages under a permissive license like MIT or Apache 2.0. For object mapping, for example, I now use Mapperly instead of AutoMapper. It is a source generator, so this is all the code you write.

// Mapperly writes the mapping code when the project builds
[Mapper]
public partial class ProductMapper
{
    [MapperIgnoreSource(nameof(Product.CreatedAt))]
    public partial ProductDto ToDto(Product product);
}

Since there is no reflection at runtime, the mapping is fast, and the build warns you about every property that it could not map. Mapperly is free under Apache 2.0, and every other package on my list passes the same license check.

Every package comes with its install command, working code and license.

Here is one thing you can try before November 16. Run dotnet list package --include-transitive in your solution and look for Polly in the output. If it shows up and you never installed it yourself, which package brought it in, and does your team need to read the Polly announcement before the date? The article explains where Polly comes from, which packages I left out of the list and why, and how to check the license of any package yourself in about a minute.

My full list for new .NET 10 projects, with the four popular packages I left out → The 12 Free NuGet Packages I Install on .NET 10

Thanks for reading, and happy coding!
- Mukesh

Free courses, always open: .NET Web API: Zero to Hero · Claude Code for .NET Developers

Built with Kit