AvroSharp 1.0.0

dotnet add package AvroSharp --version 1.0.0
                    
NuGet\Install-Package AvroSharp -Version 1.0.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="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AvroSharp" Version="1.0.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 1.0.0
                    
#r "nuget: AvroSharp, 1.0.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@1.0.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=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=AvroSharp&version=1.0.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: stable. The public API follows semantic versioning: no breaking changes before 2.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 with AvroSchema.Parse, then write and read values of it with the generic data model: GenericDatumWriter and GenericDatumReader. 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

AvroFileWriter writes .avro files and AvroFileReader reads them:

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 (AvroCodec, DeflateCodec); the AvroSharp.Codecs package adds snappy, zstandard, bzip2 and xz.

Single-object encoding, schema registries and streams

AvroMessage and AvroMessageReader write and read single-object encoded messages, with a schema store (AvroSchemaStore, or your own IAvroSchemaResolver) that finds the writer schema by fingerprint. AvroRegistryMessage and AvroRegistryMessageReader write and read messages in a schema registry's framing, with a schema ID instead of the fingerprint (AvroRegistryFraming: Confluent, Apicurio, AWS Glue). 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 (6)

Showing the top 5 NuGet packages that depend on AvroSharp:

Package Downloads
AvroSharp.Codecs

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

AvroSharp.Generators

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

AvroSharp.CodeGen

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

AvroSharp.Aws.Glue

A managed AWS Glue Schema Registry serializer on AvroSharp, for every platform: generated and [AvroSerializable] types and generic records, and zlib compression, in AWS's wire format, for Kinesis, Kafka and any transport. No Apache.Avro, no native library. Confluent.Kafka serializers are in AvroSharp.Aws.Glue.Kafka.

AvroSharp.Azure.SchemaRegistry

An Azure Schema Registry serializer on AvroSharp for Event Hubs and Service Bus messages (MessageContent): generated and [AvroSerializable] types and generic records, with the content type and bytes of Microsoft's Avro serializer. No Apache.Avro.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 243 10/3/2026
1.0.0-rc.1 103 10/1/2026
0.2.0 776 9/29/2026
0.1.1 165 9/28/2026
0.1.0 141 9/28/2026