Nfs 0.10.5
dotnet add package Nfs --version 0.10.5
NuGet\Install-Package Nfs -Version 0.10.5
<PackageReference Include="Nfs" Version="0.10.5" />
<PackageVersion Include="Nfs" Version="0.10.5" />
<PackageReference Include="Nfs" />
paket add Nfs --version 0.10.5
#r "nuget: Nfs, 0.10.5"
#:package Nfs@0.10.5
#addin nuget:?package=Nfs&version=0.10.5
#tool nuget:?package=Nfs&version=0.10.5
Nfs
A modern, idiomatic .NET NFS client and server library, multi-targeting net8.0, net9.0, and net10.0 plus netstandard2.0 and netstandard2.1 (for .NET Framework, Mono, and Unity consumers). It implements the ONC/RPC + XDR stack and the NFS protocols (v2, v3, and v4.0/4.1/4.2) from the ground up, with an emphasis on protocol compliance and interoperability with existing real-world implementations (the Linux kernel client and server, NFS-Ganesha, and the Windows NFS client). Performance is a close second, built on Span<T>, BinaryPrimitives, ref structs, and System.IO.Pipelines.
The whole stack is NativeAOT-compatible โ there is no runtime-reflection-based serialization. XDR codecs are produced by a Roslyn source generator.
๐ฆ Installation
The whole stack ships as a single package on nuget.org:
dotnet add package Nfs
Nfs bundles every component assembly (Nfs.Client, Nfs.Server, Nfs.Rpc, Nfs.Xdr, the protocol types, MOUNT, NLM/NSM) and has no external NuGet dependencies โ NativeAOT trimming drops whatever you don't use. The individual Nfs.* packages are also published to this repository's GitHub Packages feed for fine-grained or internal consumption.
๐ Documentation
Developer documentation lives in docs/:
- ๐๏ธ Architecture overview โ how the RPC, XDR, and NFS layers fit together.
- ๐ Guides โ Getting started ยท Using the client ยท Hosting a server ยท Implementing a filesystem ยท NativeAOT
- โ Feature matrix โ exactly which protocols, operations, and capabilities are supported (the single source of truth for support claims).
- โก Performance โ benchmarks and the pooled, zero-copy data path.
- ๐ RPCSEC_GSS / Kerberos โ the security layer.
๐งฑ Repository layout
| Path | Contents |
|---|---|
src/ |
Shipping libraries (Nfs.*). |
tests/ |
Unit, golden-vector, loopback, and interop tests. |
samples/ |
Runnable client and server samples. |
docs/ |
Architecture notes, developer guides, and protocol references. |
๐ ๏ธ Building
Building requires the .NET 10 SDK (pinned in global.json); it produces all target frameworks. The shipping libraries multi-target net8.0, net9.0, net10.0, netstandard2.0, and netstandard2.1 โ running the net8.0/net9.0 test executables additionally needs those runtimes installed. The net8.0/net9.0/net10.0 builds are reflection-free and NativeAOT-safe; the netstandard builds use source-only polyfills (the Polyfill package plus BCL backports such as System.Memory) and a small reflection-based codec fallback, and are intended for compatibility (.NET Framework, Mono, Unity), not AOT. See native-aot.
dotnet build Nfs.slnx -c Release
dotnet test Nfs.slnx -c Release
dotnet format Nfs.slnx --verify-no-changes --severity warn
To run a single test project or a single test:
dotnet test tests/Nfs.Xdr.Tests/Nfs.Xdr.Tests.csproj
dotnet test tests/Nfs.Xdr.Tests/Nfs.Xdr.Tests.csproj --filter "FullyQualifiedName~XdrConstantsTests"
To validate NativeAOT publishing:
dotnet publish samples/Nfs.AotSmoke/Nfs.AotSmoke.csproj -c Release -r linux-x64
| Product | Versions 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. |
-
.NETStandard 2.0
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.9)
- Microsoft.Bcl.HashCode (>= 6.0.0)
- Microsoft.Bcl.TimeProvider (>= 10.0.9)
- System.IO.Pipelines (>= 8.0.0)
- System.Memory (>= 4.6.3)
- System.Threading.Tasks.Extensions (>= 4.6.3)
-
.NETStandard 2.1
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.9)
- Microsoft.Bcl.TimeProvider (>= 10.0.9)
- System.IO.Pipelines (>= 8.0.0)
-
net10.0
- No dependencies.
-
net8.0
- System.IO.Pipelines (>= 8.0.0)
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.10.5 | 43 | 6/27/2026 |