FluentStorage 8.0.8
Prefix ReservedSee the version list below for details.
dotnet add package FluentStorage --version 8.0.8
NuGet\Install-Package FluentStorage -Version 8.0.8
<PackageReference Include="FluentStorage" Version="8.0.8" />
<PackageVersion Include="FluentStorage" Version="8.0.8" />
<PackageReference Include="FluentStorage" />
paket add FluentStorage --version 8.0.8
#r "nuget: FluentStorage, 8.0.8"
#:package FluentStorage@8.0.8
#addin nuget:?package=FluentStorage&version=8.0.8
#tool nuget:?package=FluentStorage&version=8.0.8
FluentStorage 8.0.8
- FluentStorage
OpenSeekable: Return null if the stream cannot be created or the object length cannot be determined
FluentStorage 8.0.7
- FluentStorage
- Transfer: Add new APIs to
DownloadDirectoryandUploadDirectory, with default implementation for all stores
- Transfer: Add new APIs to
- FluentStorage.FTP
- Transfer: Special handling using native FluentFTP APIs for
DownloadDirectoryandUploadDirectory
- Transfer: Special handling using native FluentFTP APIs for
FluentStorage 8.0.6
- FluentStorage
- Paths: A new unified path system has been introduced across all providers!
- Paths:
StoragePath.Normalizehas been completely rewritten to enable the unified path system - Paths:
StoragePath.Combine,.Splitand.GetParentare completely rewritten for performance - Paths:
StoragePath.ComparePath,.RemoveRootFolder,.GetRootFolderand.Renamehave been removed - DiskStore:
GetObjectswill now return all objects in the main directory recursively by default - Move all sinks into
FluentStorage.SinksNS - Move
DelegatedStreamandNonCloseableStreamintoFluentStorage.Storage.SinksNS - Rename
SinkedBlobStoragetoSinkedStore - Remove
RandomGeneratorand move it into testing project
- FluentStorage.SFTP
- Paths: New SFTP path normalization system that works with updated
StoragePathnormalization
- Paths: New SFTP path normalization system that works with updated
- FluentStorage.GCP
- Paths: All APIs updated to use the new
StoragePathnormalization to support unified paths
- Paths: All APIs updated to use the new
- FluentStorage.Minio
- Paths: All APIs updated to use the new
StoragePathnormalization to support unified paths
- Paths: All APIs updated to use the new
- FluentStorage.Mongo
- Paths: All APIs updated to use the new
StoragePathnormalization to support unified paths
- Paths: All APIs updated to use the new
- FluentStorage.Alibaba
- Paths: All APIs updated to use the new
StoragePathnormalization to support unified paths
- Paths: All APIs updated to use the new
- FluentStorage.Tests
- Merge all tests into a single project, cleanly seperating unit and integration tests
- New tests for path normalization (
StoragePath.Normalize), path combination (StoragePath.Combine) and path splitting (StoragePath.Split) - New tests for
SeekableStreamused in seeking/streaming - New tests for
IStoreoperations and fixes made to local disk implementation
FluentStorage 8.0.5
- FluentStorage
- IStore: Implement new object versioning APIs, tagging APIs and storage tier APIs
- IStore: Change
IsFileSystem,IsSeekableto async to align with other feature check APIs - IStore: Add
IsVersioned,IsTaggedandIsTieredto check if providers support new features - Assertions: Remove
AssertFullPathand handle it inline in all APIs
- FluentStorage.AWS
- Add versioning APIs:
IsVersioned,ListObjectVersions,GetObjectVersion,RestoreObjectVersion,DeleteObjectVersion - Add tagging APIs:
IsTagged,GetObjectTags,SetObjectTags,DeleteObjectTags - Add storage tier APIs:
IsTiered,GetObjectTier,SetObjectTier
- Add versioning APIs:
- FluentStorage.Azure.Blob
- Add versioning APIs:
IsVersioned,ListObjectVersions,GetObjectVersion,RestoreObjectVersion,DeleteObjectVersion - Add tagging APIs:
IsTagged,GetObjectTags,SetObjectTags,DeleteObjectTags - Add storage tier APIs:
IsTiered,GetObjectTier,SetObjectTier
- Add versioning APIs:
- FluentStorage.GCP
- Rewrite path normalization to be simpler and not overly aggressive
- Add versioning APIs:
IsVersioned,ListObjectVersions,GetObjectVersion,RestoreObjectVersion,DeleteObjectVersion - Add tagging APIs:
IsTagged,GetObjectTags,SetObjectTags,DeleteObjectTags - Add storage tier APIs:
IsTiered,GetObjectTier,SetObjectTier
- FluentStorage.Alibaba
- Add tagging APIs:
IsTagged,GetObjectTags,SetObjectTags,DeleteObjectTags
- Add tagging APIs:
- FluentStorage.Minio
- Add tagging APIs:
IsTagged,GetObjectTags,SetObjectTags,DeleteObjectTags - Add storage tier APIs:
IsTiered,GetObjectTier,SetObjectTier
- Add tagging APIs:
FluentStorage 8.0.4
- FluentStorage
- Disk: Fix
ListObjectsand addGetServer&MoveObjectAPIs - Streams: Add
NonSeekableStreamto the core package - Rename core classes:
StoreObject,MemoryMessenger,DiskStore,MemoryStore - Move factory classes from
FluentStorage.AWS.Factory,FluentStorage.Alibaba.FactoryandFluentStorage.Minio.Factoryto root NS
- Disk: Fix
- FluentStorage.Mongo
- New: MongoDB GridFS storage provider using native MongoDB driver. Introduces the factory API
MongoGridStorageand store classMongoGridStore.
- New: MongoDB GridFS storage provider using native MongoDB driver. Introduces the factory API
FluentStorage 8.0.3
- Add APIs to all providers:
GetObjectLengthand integrate it with streaming/seeking implementation
FluentStorage 8.0.2
- Add streaming/seeking APIs to all providers:
OpenRange,OpenSeekable
FluentStorage 8.0.1
- Fix some issues with the original v8 release.
FluentStorage 8.0.0
- Please read the Migration Guide to help you migrate from older versions to FluentStorage 8!
- FluentStorage
- All cloud storage API methods have been redesigned to improve productivity and ease of use.
- All extension-method factory API has been removed: For example
StorageFactory.BlobsandStorageFactory.Messagesno longer exist. - Factory classes have been introduced on a per-provided basis.
- Factory classes can be accessed directly to construct new
IStoreobjects: For exampleAwsS3Storage.FromCredentialsrather thanStorageFactory.Blobs.AwsS3. - All API methods are
asyncand the "Async" suffix has been dropped. - All API methods have an optional
CancellationTokenrather than forcing users to provide one. - At initialization, S3-compatible stores will no longer create the bucket if the specified bucket does not exist.
WriteAsync()is renamed toSetObject()and will auto compute the object's MIME type (Content-Type) if it is not supplied.GetPresignedUrl()and its variations will auto compute the object's MIME type (Content-Type).CreateDirectory()will no longer create a "dummy file" in a cloud storage bucket.RenameAsync()is renamed toMoveObject()and will no longer perform a recursive copy and delete, instead it will efficiently move using native operations.ExistsAsync()is renamed toObjectExists()and will consistently return true/false if the file or folder exists on the bucket/server.DeleteAsync()is renamed toDeleteObject()and will consistently delete a single file or folder from the bucket/server.DeleteObjects()will consistently delete multiple files or folders from the bucket/server.GetClient()will consistently return the internal cloud SDK client for all types of cloud storage. (ReplacesNativeBlobClient)- Collections returned by APIs will always be
Listinstead ofIReadOnlyCollection. - Exceptions are moved into the
FluentStorage.Exceptionsnamespace - Enums are moved into the
FluentStorage.Enumsnamespace - Bucket stores now support streaming/seeking, presigned URL and more object manipulation API
- We no longer support Databricks, ServiceFabric, EventHub, Virtual storage and ZIP archives
- FluentStorage.AWS
- Breaking changes to entire API surface to improve productivity and ease of use.
- New API:
GetClient,MoveObject,DownloadObject,UploadObject,OpenRead,OpenWrite,GetUploadUrl,GetDownloadUrl,GetPresignedUrl,GetObjectSas,OpenRange,OpenSeekable,GetObjectLength.
- FluentStorage.GCP
- Breaking changes to entire API surface to improve productivity and ease of use.
- New API:
GetPresignedUrl,GetObjectSas,MoveObject,DeleteDirectory,OpenRange,OpenSeekable,GetObjectLength.
- FluentStorage.Azure.Blobs
- Breaking changes to entire API surface to improve productivity and ease of use.
- New API:
GetClient,MoveObject,DownloadObject,UploadObject,OpenRead,OpenWrite,GetUploadUrl,GetDownloadUrl,GetPresignedUrl,GetObjectSas,OpenRange,OpenSeekable,GetObjectLength.
- FluentStorage.Azure.Files
- Breaking changes to entire API surface to improve productivity and ease of use.
- New API:
GetClient,OpenRange,OpenSeekable,GetObjectLength.
- FluentStorage.Azure.ServiceBus
- Breaking changes to entire API surface to improve productivity and ease of use.
- FluentStorage.Azure.KeyVault
- Breaking changes to entire API surface to improve productivity and ease of use.
- FluentStorage.Azure.Queues
- Breaking changes to entire API surface to improve productivity and ease of use.
- FluentStorage.FTP
- Breaking changes to entire API surface to improve productivity and ease of use.
- FTP has new directory and server API for file systems
- New API:
GetServer,CreateDirectory,DeleteDirectory,DirectoryExists,MoveDirectory,GetFilePermissions,SetFilePermissions,MoveObject,DownloadObject,UploadObject,GetBytes,SetBytes,OpenRange,OpenSeekable,GetObjectLength.
- FluentStorage.SFTP
- Breaking changes to entire API surface to improve productivity and ease of use.
- SFTP has new directory and server API for file systems
- New API:
GetServer,CreateDirectory,DeleteDirectory,DirectoryExists,MoveDirectory,GetFilePermissions,SetFilePermissions,MoveObject,DownloadObject,UploadObject,GetBytes,SetBytes,OpenRange,OpenSeekable,GetObjectLength.
- FluentStorage.Alibaba
- New: Alibaba OSS provider using native Aliyun SDK. Introduces the factory API
AlibabaStorageand store classAlibabaStore.
- New: Alibaba OSS provider using native Aliyun SDK. Introduces the factory API
- FluentStorage.Minio
- New: MinIO storage provider using native Minio SDK. Introduces the factory API
MinioStorageand store classMinioStore.
- New: MinIO storage provider using native Minio SDK. Introduces the factory API
| 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 is compatible. 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 was computed. 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.IO.RecyclableMemoryStream (>= 3.0.1)
- System.Text.Json (>= 8.0.6)
- System.Threading.Thread (>= 4.3.0)
- TestableIO.System.IO.Abstractions.Wrappers (>= 22.0.15)
-
.NETStandard 2.1
- Microsoft.IO.RecyclableMemoryStream (>= 3.0.1)
- System.Text.Json (>= 8.0.6)
- System.Threading.Thread (>= 4.3.0)
- TestableIO.System.IO.Abstractions.Wrappers (>= 22.0.15)
-
net7.0
- Microsoft.IO.RecyclableMemoryStream (>= 3.0.1)
- TestableIO.System.IO.Abstractions.Wrappers (>= 22.0.15)
-
net8.0
- Microsoft.IO.RecyclableMemoryStream (>= 3.0.1)
- TestableIO.System.IO.Abstractions.Wrappers (>= 22.0.15)
-
net9.0
- Microsoft.IO.RecyclableMemoryStream (>= 3.0.1)
- TestableIO.System.IO.Abstractions.Wrappers (>= 22.0.15)
NuGet packages (36)
Showing the top 5 NuGet packages that depend on FluentStorage:
| Package | Downloads |
|---|---|
|
Elsa.Core
Elsa is a set of workflow libraries and tools that enable lean and mean workflowing capabilities in any .NET Core application. This package contains the core of Elsa. Tip: reference the `Elsa` package instead of this one. |
|
|
Elsa.Http
Provides HTTP activities to listen for and send out HTTP requests. |
|
|
FluentStorage.AWS
Extension to FluentStorage providing integration with AWS S3 blob storage. |
|
|
FluentStorage.Azure.Blobs
Extension to FluentStorage providing Azure blob storage. |
|
|
Elsa.WorkflowProviders.BlobStorage
Provides a workflow definition provider that loads workflow definitions from files. |
GitHub repositories (3)
Showing the top 3 popular GitHub repositories that depend on FluentStorage:
| Repository | Stars |
|---|---|
|
elsa-workflows/elsa-core
The Workflow Engine for .NET
|
|
|
kurrent-io/KurrentDB
KurrentDB is a database that's engineered for modern software applications and event-driven architectures. Its event-native design simplifies data modeling and preserves data integrity while the integrated streaming engine solves distributed messaging challenges and ensures data consistency.
|
|
|
bitfoundation/bitplatform
Build all of your apps using what you already know and love ❤️
|
| Version | Downloads | Last Updated |
|---|---|---|
| 8.0.22 | 8,574 | 9/17/2026 |
| 8.0.21 | 5,985 | 9/11/2026 |
| 8.0.20 | 3,626 | 9/4/2026 |
| 8.0.16 | 25,479 | 7/23/2026 |
| 8.0.15 | 1,307 | 7/23/2026 |
| 8.0.14 | 740 | 7/23/2026 |
| 8.0.13 | 284 | 7/23/2026 |
| 8.0.12 | 463 | 7/22/2026 |
| 8.0.11 | 659 | 7/21/2026 |
| 8.0.10 | 16,940 | 7/20/2026 |
| 8.0.9 | 429 | 7/19/2026 |
| 8.0.8 | 1,566 | 7/18/2026 |
| 8.0.7 | 228 | 7/18/2026 |
| 8.0.6 | 1,488 | 7/17/2026 |
| 8.0.5 | 818 | 7/17/2026 |
| 8.0.4 | 1,980 | 7/16/2026 |
| 8.0.3 | 519 | 7/16/2026 |
| 8.0.2 | 903 | 7/16/2026 |
| 8.0.0 | 17,444 | 7/15/2026 |
| 7.1.1 | 12,556 | 7/6/2026 |