Centeva.ObjectStorage
7.0.0
Prefix Reserved
dotnet add package Centeva.ObjectStorage --version 7.0.0
NuGet\Install-Package Centeva.ObjectStorage -Version 7.0.0
<PackageReference Include="Centeva.ObjectStorage" Version="7.0.0" />
<PackageVersion Include="Centeva.ObjectStorage" Version="7.0.0" />
<PackageReference Include="Centeva.ObjectStorage" />
paket add Centeva.ObjectStorage --version 7.0.0
#r "nuget: Centeva.ObjectStorage, 7.0.0"
#:package Centeva.ObjectStorage@7.0.0
#addin nuget:?package=Centeva.ObjectStorage&version=7.0.0
#tool nuget:?package=Centeva.ObjectStorage&version=7.0.0
Centeva Object Storage Library
Centeva.ObjectStorage is a .NET 6+ / .NET Standard library that provides a generic interface to local or cloud-hosted object ("blob") storage providers.
Supported providers are:
- Amazon AWS S3 (and anything compatible with its API such as MinIO
- Google Cloud Storage
- Azure Blob Storage
- Azure File Share Storage
- Local disk
Built With
Getting Started
Import the Centeva.ObjectStorage package to your projects where needed, along
with the desired provider sub-packages:
Centeva.ObjectStorage.GCPCenteva.ObjectStorage.AWSCenteva.ObjectStorage.Azure.BlobCenteva.ObjectStorage.Azure.FileShare
Create an instance of StorageFactory and register the providers you require,
then build an instance of IObjectStorage using a connection string:
var factory = new StorageFactory()
.UseAwsS3Storage()
.UseAzureBlobStorage()
.UseAzureFileStorage()
.UseGoogleCloudStorage();
var storage = factory.GetConnection("provider://key1=value1;key2=value2");
In modern .NET applications, you will likely do this as part of service registration in Program.cs, obtaining the connection string from configuration.
In some cases you may prefer to instantiate storage providers directly rather than using connection strings. Each provider's constructor allows the needed parameters to be provided.
Examples
// Local Disk
var storageFromConnectionString = factory.GetConnection("disk://path=C:\\temp\\files");
var storageFromConstructor = new DiskObjectStorage("C:\\temp\\files");
// AWS S3
var storageFromConnectionString = factory.GetConnection("aws.s3://bucket=myfiles;accessKey=mykey;secretKey=secret");
var storageFromConstructor = new AwsS3ObjectStorage("myfiles", "regionName", "endpointUrl", "accessKey", "secret");
// Azure Blob Storage
var storageFromConnectionString = factory.GetConnection("azure.blob://container=myfiles;accountName=myaccount;accountKey=myAccountKey");
var storageFromConstructor = new AzureBlobObjectStorage("accountName", "accountKey", "containerName");
// Azure FileShare Storage
var storageFromConnectionString = factory.GetConnection("azure.file://share=myfiles;accountName=myaccount;accountKey=myAccountKey");
var storageFromConstructor = new AzureFileShareStorage("accountName", "accountKey", "shareName");
// Google Cloud Storage
var storageFromConnectionString = factory.GetConnection("google.storage://bucket=myfiles;credentialsFilePath=/path/to/creds.json");
var storageFromConnectionString2 = factory.GetConnection("google.storage://bucket=myfiles;credentials=base64EncodedCredentialsJson");
var storageFromConstructor = GoogleObjectStorage.CreateFromCredentialsFile("bucketName", "/path/to/creds.json");
var storageFromConstructor2 = GoogleObjectStorage.CreateFromCredentialsJson("bucketName", "credentialsJsonString");
// MinIO (using AWS S3 provider)
var storageFromConnectionString = factory.GetConnection("aws.s3://endpoint=http://localhost:9000;region=us-east-1;bucket=myfiles;accessKey=myAccount;secretKey=myPassword");
var storageFromConstructor = new AwsS3ObjectStorage("myfiles", "us-east-1", "http://localhost:9000", "myAccount", "myPassword");
MinIO and macOS Compatibility
When using MinIO or other S3-compatible storage services with custom endpoints on macOS,
the library automatically uses AuthenticationRegion instead of RegionEndpoint to avoid
DNS resolution conflicts with the AWS SDK. This ensures proper functionality across all
platforms (Windows, Linux, and macOS) without requiring any special configuration.
**TODO:** Write API documentation
## Contributing
Please use a Pull Request to suggest changes to this library. As this is a
shared library, strict semantic versioning rules should be followed to avoid
unexpected breaking changes.
### Running Tests
From Windows, use the `dotnet test` command, or your Visual Studio Test
Explorer.
### Deployment
This library is versioned by [GitVersion](https://gitversion.net/). Create a
Git tag for an official release (e.g., "v1.0.0"). Version numbers can be
incremented via commit message using the [GitVersion
approaches](https://gitversion.net/docs/reference/version-increments).
| 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 was computed. 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 was computed. |
| .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
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (5)
Showing the top 5 NuGet packages that depend on Centeva.ObjectStorage:
| Package | Downloads |
|---|---|
|
Centeva.ObjectStorage.GCP
Google Cloud Storage provider for Centeva.ObjectStorage |
|
|
Centeva.ObjectStorage.Azure.Blob
Azure Blob Storage provider for Centeva.ObjectStorage |
|
|
Centeva.ObjectStorage.AWS
AWS S3 compatible storage provider for Centeva.ObjectStorage |
|
|
Centeva.ObjectStorage.Azure.File
Azure File Share Storage provider for Centeva.ObjectStorage |
|
|
Centeva.ObjectStorage.S3
AWS S3 compatible storage provider for Centeva.ObjectStorage |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 7.0.0 | 333 | 12/23/2025 |
| 6.2.0 | 383 | 10/30/2025 |
| 6.1.0 | 500 | 9/17/2025 |
| 6.0.0 | 311 | 8/20/2025 |
| 5.1.0 | 283 | 8/20/2025 |
| 5.1.0-tags-v5-1-0-pre-3.1 | 104 | 2/27/2025 |
| 5.1.0-tags-v5-1-0-pre-2.1 | 256 | 1/23/2025 |
| 5.1.0-tags-v5-1-0-pre-1.1 | 77 | 1/22/2025 |
| 5.0.1 | 360 | 1/17/2025 |
| 5.0.0 | 348 | 12/19/2024 |
| 5.0.0-tags-v5-0-0-pre-1.1 | 98 | 11/15/2024 |
| 4.0.0 | 372 | 10/21/2024 |
| 3.1.0 | 301 | 10/9/2024 |
| 3.0.0 | 315 | 9/26/2024 |
| 3.0.0-tags-v3-0-0-pre-4.1 | 95 | 9/26/2024 |
| 3.0.0-tags-v3-0-0-pre-3.1 | 103 | 9/26/2024 |
| 3.0.0-tags-v3-0-0-pre-2.1 | 90 | 9/26/2024 |
| 3.0.0-tags-v3-0-0-pre-1.1 | 89 | 9/26/2024 |
| 2.0.1 | 455 | 1/4/2024 |
| 2.0.0 | 342 | 12/28/2023 |
| 2.0.0-pre.3 | 129 | 12/20/2023 |
| 2.0.0-pre.2 | 102 | 12/19/2023 |
| 2.0.0-pre.1 | 119 | 12/18/2023 |
| 1.1.0 | 378 | 10/30/2023 |
| 1.0.0 | 279 | 10/30/2023 |