AvroSharp 0.2.0

dotnet add package AvroSharp --version 0.2.0
                    
NuGet\Install-Package AvroSharp -Version 0.2.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AvroSharp" Version="0.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AvroSharp" Version="0.2.0" />
                    
Directory.Packages.props
<PackageReference Include="AvroSharp" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AvroSharp --version 0.2.0
                    
#r "nuget: AvroSharp, 0.2.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package AvroSharp@0.2.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AvroSharp&version=0.2.0
                    
Install as a Cake Addin
#tool nuget:?package=AvroSharp&version=0.2.0
                    
Install as a Cake Tool

AvroSharp

A high-performance .NET implementation of the Apache Avro™ specification: schemas, binary and JSON encoding, schema resolution, object container files and single-object encoding. It is written for spans and IBufferWriter<byte>, allocates little, and needs no reflection, so it works with Native AOT and trimming.

Status: an early preview (0.x). The API may still change before 1.0.

Documentation · API reference · Code generation · Benchmarks · Compared with Apache.Avro

Targets net10.0, net9.0, net8.0, netstandard2.1 and netstandard2.0.

Getting started

Parse a schema, then write and read values of it with the generic data model. AvroValue holds any Avro value without boxing, and a GenericRecord holds a record's fields by name or position.

using AvroSharp.Generic;
using AvroSharp.Schemas;

var schema = (RecordSchema)AvroSchema.Parse("""
    {"type":"record","name":"User","namespace":"example","fields":[
      {"name":"id","type":"int"},
      {"name":"name","type":"string"}]}
    """);

var user = new GenericRecord(schema) { ["id"] = 1, ["name"] = "Ada" };
byte[] bytes = GenericDatumWriter.Create(schema).WriteToArray(user);

GenericRecord copy = GenericDatumReader.Create(schema).Read(bytes).AsRecord();

Schema evolution. Data written with one version of a schema can be read as another: GenericDatumReader.Create(writerSchema, readerSchema). Fields are matched by name or alias, removed fields are skipped, added fields take their defaults, and numbers are promoted. Readers and writers are cached per schema (or schema pair) and are thread-safe.

JSON. GenericDatumJsonWriter and GenericDatumJsonReader implement the specification's JSON encoding.

Object container files

using var writer = AvroFileWriter.CreateGeneric(stream, schema, new AvroFileWriterOptions { Codec = AvroCodec.Deflate });
writer.Write(user);

using var reader = AvroFileReader.OpenGeneric(stream);
foreach (var value in reader.ReadAll()) { ... }

Asynchronous reading and writing are available too (OpenGenericAsync, ReadAllAsync). null and deflate are built in; the AvroSharp.Codecs package adds snappy, zstandard, bzip2 and xz.

Single-object encoding and streams

AvroMessage and AvroMessageReader write and read single-object encoded messages, with a schema store that finds the writer schema by fingerprint. AvroStreamWriter and AvroStreamReader handle a stream of values without a container.

C# types from schema files

The AvroSharp.Generators package generates C# classes from .avsc files at build time, with serializers that call AvroWriter/AvroReader directly:

byte[] bytes = order.ToAvroBytes();
var copy = shop.Order.FromAvroBytes(bytes);

More

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on AvroSharp:

Package Downloads
AvroSharp.Generators

Source generator for AvroSharp: C# types and allocation-free serializers from Apache Avro™ schema files (.avsc).

AvroSharp.Codecs

The snappy, zstandard, bzip2 and xz codecs for AvroSharp object container files, on fully managed libraries.

AvroSharp.CodeGen

C# code generation from Apache Avro™ schemas, used by the AvroSharp source generator and tools.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.2.0 0 9/29/2026
0.1.1 42 9/28/2026
0.1.0 42 9/28/2026