// the find
dotnet/aspnet-api-versioning
Provides a set of libraries which add service API versioning to ASP.NET Web API, OData with ASP.NET Web API, and ASP.NET Core.
The official .NET Foundation library for adding API versioning to ASP.NET Core (both MVC and Minimal APIs), classic Web API, and OData. It handles version negotiation via URL segment, query string, or header, and integrates with OpenAPI/Swagger tooling to generate per-version specs. The target audience is teams building versioned REST APIs in .NET who want something that doesn't require rewriting their routing.
Supports all three versioning strategies (URL path, query string, header) with a single attribute-based configuration — you're not locked into one approach. The OpenAPI integration is first-class: the API explorer packages generate separate Swagger docs per version, which is the part most home-rolled solutions get wrong. Being under the dotnet org means it tracks .NET releases reliably and the support policy (N-1 LTS) is explicit rather than left to chance. The conventions-based registration path lets you version controllers without touching their source code, which is genuinely useful when versioning a legacy service you don't own.
The package sprawl is real — there are ten separate NuGet packages and picking the right combination is non-obvious until you've read through the wiki. The migration from the old community package (Microsoft.AspNetCore.Mvc.Versioning) to this org required breaking changes and the rename to Asp.Versioning.* confused people; some Stack Overflow answers still point at the dead package. OData support inherits OData's own complexity and the two together produce configuration that's hard to reason about. Documentation lives primarily in the GitHub wiki rather than proper reference docs, so discoverability is poor and the wiki occasionally lags behind releases.