WriteableFileProviders.Common 2027.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package WriteableFileProviders.Common --version 2027.0.0
                    
NuGet\Install-Package WriteableFileProviders.Common -Version 2027.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="WriteableFileProviders.Common" Version="2027.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="WriteableFileProviders.Common" Version="2027.0.0" />
                    
Directory.Packages.props
<PackageReference Include="WriteableFileProviders.Common" />
                    
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 WriteableFileProviders.Common --version 2027.0.0
                    
#r "nuget: WriteableFileProviders.Common, 2027.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 WriteableFileProviders.Common@2027.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=WriteableFileProviders.Common&version=2027.0.0
                    
Install as a Cake Addin
#tool nuget:?package=WriteableFileProviders.Common&version=2027.0.0
                    
Install as a Cake Tool

WriteableFileProviders.Common

The core of WriteableFileProviders: the IWriteableFileProvider interface, the base class every provider builds on, and building a provider from configuration.

Install

You rarely install it yourself: each provider package brings it.

dotnet add package WriteableFileProviders.Physical

Or .AzureBlob, .AmazonS3, .Minio, .GoogleCloudStorage, .Box, .SharePoint. Install Common alone to write a provider of your own. Needs .NET 10, and is native AOT compatible, except building a provider from configuration (Native AOT). Keep every WriteableFileProviders package in an app on the same major version.

Use

using WriteableFileProviders;

IWriteableFileProvider files = WriteableFileProviderSerializer.FromConfiguration(configuration.GetSection("Files"));

await files.UpdateFileAsync("reports/2026.csv", stream);                         // creates reports/ if missing
await files.UpdateFileAsync("app.log", line, UpdateFileOptions.Append);
await using var slice = await files.ReadRangeAsync("big.bin", 1_000_000, 4096);   // 4,096 bytes from 1,000,000
await foreach (var entry in files.EnumerateAsync("reports", recursive: true)) { }
await files.MoveAsync("reports/2026.csv", "archive/2026.csv");                   // FileExistsException if taken
var url = await files.GetSignedUrlAsync("archive/2026.csv", new SignedUrlOptions { Validity = TimeSpan.FromMinutes(15) });

Paths are relative to the provider's root, and nothing outside it can be reached. Every member is async, except the three IFileProvider ones (GetFileInfo, GetDirectoryContents, Watch).

Configuration

{ "Files": { "Type": "WriteableAzureBlobFileProvider", "AccountName": "contoso", "AccountKey": "...", "ContainerName": "files" } }
Key Default Meaning
Type required The provider's class name, in any case.
RootDirectoryPath the store's root The folder the provider is confined to, such as tenants/acme.
RootDirectorySegments The same folder as an array of names.
any other The provider's options, by property name, in any case. Its README lists them.

Register it with dependency injection as a singleton IWriteableFileProvider, which the container builds on first use and disposes:

services.AddWriteableFileProvider(configuration.GetSection("Files"));

For several providers, register each under a key: services.AddKeyedSingleton<IWriteableFileProvider>(key, ...).

WriteableFileProviderSerializer also reads JSON (FromJson) and writes a provider back (ToJson, ToJsonString). The JSON holds the options' secrets: never log it. To build a provider of your own from configuration, call WriteableFileProviderSerializer.Register<TProvider>() first, or pass its assembly.

The serializer finds types and reads options through reflection, so it warns in a trimmed or native AOT app. There, bind the options and build the provider in code:

var options = configuration.GetSection("Files").Get<AzureBlobFileProviderOptions>()!;
services.AddWriteableFileProvider(_ => new WriteableAzureBlobFileProvider(options));

Learn more

Product Compatible and additional computed target framework versions.
.NET 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (8)

Showing the top 5 NuGet packages that depend on WriteableFileProviders.Common:

Package Downloads
WriteableFileProviders.Physical

Read, write, list and watch files in a folder on the local disk through IWriteableFileProvider: atomic writes and appends, conditional writes, byte-range and seekable reads, change notifications. The same API as the Azure Blob, Amazon S3, MinIO, Google Cloud Storage, Box and SharePoint providers. Native AOT compatible.

WriteableFileProviders.AzureBlob

Azure Blob Storage as a writeable IFileProvider: read, write, append, list, copy and move blobs in a container through IWriteableFileProvider, on block blobs, with conditional writes, byte ranges, Microsoft Entra ID sign-in and SAS URLs (service or user delegation). The same API as the local disk, Amazon S3, MinIO, Google Cloud Storage, Box and SharePoint providers. Native AOT compatible.

WriteableFileProviders.AmazonS3

Amazon S3 and S3-compatible storage as a writeable IFileProvider: read, write, append, list, copy and move objects in a bucket through IWriteableFileProvider, on the AWS SDK for .NET v4, with multipart uploads, conditional writes, byte ranges and presigned URLs. The same API as the local disk, Azure Blob, MinIO, Google Cloud Storage, Box and SharePoint providers. Native AOT compatible.

WriteableFileProviders.Minio

MinIO as a writeable IFileProvider: read, write, append, list, copy and move objects in a bucket through IWriteableFileProvider, on the AWS SDK for .NET v4 (no Minio SDK), with multipart uploads, byte ranges and presigned URLs. The same API as the local disk, Azure Blob, Amazon S3, Google Cloud Storage, Box and SharePoint providers. Native AOT compatible.

WriteableFileProviders.SharePoint

SharePoint document libraries as a writeable IFileProvider: read, write, append, list, copy and move files through IWriteableFileProvider and Microsoft Graph, with upload sessions, byte ranges, sign-in by secret, certificate or managed identity, and download URLs. The same API as the local disk, Azure Blob, Amazon S3, MinIO, Google Cloud Storage and Box providers. Native AOT compatible.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2027.1.1 204 10/13/2026
2027.1.1-rc.1 95 10/13/2026
2027.1.0 163 10/12/2026
2027.1.0-rc.1 99 10/12/2026
2027.0.0 555 10/11/2026
2027.0.0-rc.2 98 10/11/2026
Loading failed