![]() |
VOOZH | about |
dotnet add package devdeer.Libraries.Azure.BlobStorage --version 0.7.10
NuGet\Install-Package devdeer.Libraries.Azure.BlobStorage -Version 0.7.10
<PackageReference Include="devdeer.Libraries.Azure.BlobStorage" Version="0.7.10" />
<PackageVersion Include="devdeer.Libraries.Azure.BlobStorage" Version="0.7.10" />Directory.Packages.props
<PackageReference Include="devdeer.Libraries.Azure.BlobStorage" />Project file
paket add devdeer.Libraries.Azure.BlobStorage --version 0.7.10
#r "nuget: devdeer.Libraries.Azure.BlobStorage, 0.7.10"
#:package devdeer.Libraries.Azure.BlobStorage@0.7.10
#addin nuget:?package=devdeer.Libraries.Azure.BlobStorage&version=0.7.10Install as a Cake Addin
#tool nuget:?package=devdeer.Libraries.Azure.BlobStorage&version=0.7.10Install as a Cake Tool
If you want to use this package you should be aware of some principles and practices we at DEVDEER use. So be aware that this is not backed by a public repository. The purpose here is to give out customers easy access to our logic. Nevertheless, you are welcome to use this lib if it provides any advantages.
This package is designed to simplify interactions with Azure BLOB Storage. It provides an abstraction layer over the Azure SDK, making it easier to perform common BLOB operations. It is primarily intended for internal DEVDEER projects, but it can be useful for any .NET-based application that integrates with Azure Storage.
Key Features:
To use this library, follow these steps:
Add the library to your .NET project using NuGet:
dotnet add package devdeer.Libraries.Azure.BlobStorage
The documentation is divided into several sections:
This module supports multiple ways to authenticate and interact with Azure Blob Storage. You can choose the method that best suits your deployment environment and security requirements. The supported methods are:
{
"BlobStorageOptions": {
"ConnectionString": "storage-account-connection-string"
}
}
AccountName and AccountKey in your configuration. The package will construct the connection string
dynamically if an explicit connection string is not provided.{
"BlobStorageOptions": {
"AccountName": "storage-account-name",
"AccountKey": "storage-account-key"
}
}
DefaultAzureCredential class from the Azure Identity library for authentication. This method is ideal
for environments where managed identities or developer credentials (e.g., Visual Studio, Azure CLI) are available.AccountName in your configuration. The module will use the DefaultAzureCredential to automatically
select the best available credential (e.g., environment variables, managed identity, Azure CLI credentials, etc.).{
"BlobStorageOptions": {
"AccountName": "storage-account-name"
}
}
To register our service in Program.cs, add the following dependency
injection configuration:
var builder = Host.CreateDefaultBuilder(args)
.ConfigureServices((context, services) =>
{
// Register options from configuration
services.RegisterOption<BlobStorageOptions>(BlobStorageOptions.ConfigurationKey);
// Register BLOB storage logic
services.AddScoped<IBlobStorageLogic, BlobStorageLogic>();
});
After registering the service, you can inject it into your classes and use it as needed. The example below demonstrates
injecting IBlobStorageLogic into a service and using it to upload a file:
public class CustomService
{
// Field for the BLOB storage logic instance.
private readonly IBlobStorageLogic _blobStorageLogic;
// Constructor with dependency injection.
public CustomService(IBlobStorageLogic blobStorageLogic)
{
_blobStorageLogic = blobStorageLogic;
}
// Method with Azure BLOB storage service implementation.
public async Task CustomMethod(...)
{
//...
BlobClient? blobClient = null;
try
{
// Upload the file to Azure Blob Storage.
var blobClient = await _blobStorageLogic.UploadAsync(fileStream, blobName, containerName);
}
catch(Exception ex)
{
// Handle exceptions.
}
}
}
DEVDEER is a company from Magdeburg, Germany which is specialized in consulting, project management and development. We are very focussed on Microsoft Azure as a platform to run our products and solutions in the cloud. So all of our backend components usually runs in this environment and is developed using .NET. In the frontend area we are using react and a huge bunch of packages to build our UIs.
You can find us online:
👁 YouTube
👁 YouTube Channel Subscribers
👁 YouTube Channel Views
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.7.10 | 129 | 5/15/2026 |
| 0.7.9 | 100 | 5/11/2026 |
| 0.7.8 | 106 | 5/4/2026 |
| 0.7.7 | 94 | 5/4/2026 |
| 0.7.6 | 114 | 4/19/2026 |
| 0.7.5 | 150 | 4/5/2026 |
| 0.7.4 | 124 | 3/22/2026 |
| 0.7.3 | 163 | 3/6/2026 |
| 0.7.2 | 131 | 1/14/2026 |
| 0.7.1 | 142 | 1/7/2026 |
| 0.7.0 | 218 | 12/20/2025 |
| 0.6.0 | 160 | 12/13/2025 |
| 0.5.1 | 215 | 11/28/2025 |
| 0.5.0 | 486 | 11/20/2025 |
| 0.4.1 | 269 | 11/9/2025 |
| 0.4.0 | 252 | 11/9/2025 |
| 0.3.17-beta | 255 | 11/7/2025 |
| 0.3.16-beta | 299 | 10/21/2025 |
| 0.3.15-beta | 165 | 10/18/2025 |
| 0.3.14-beta | 216 | 10/15/2025 |
- BREAKING CHANGES:
- OperationResultModel is removed.
- Uploading now returns `BlobClient` instance.
- `CountBlobs` method is renamed to `GetBlobAmountAsync` and returns `int`.
- `GetContainerStatistics` method returns `ContainerStatisticsModel`.
- `DownloadToStreamAsync` now returns ready-to-read `Stream` with Position set to 0.
- `DownloadToPathAsync` now returns string with full path to the downloaded file.
- Renamed `DeleteIfExistsAsync` to `DeleteBlobIfExistsAsync` and changed return type to `ValueTask<bool>`
- Updated `DeleteContainerAsync` to return `Task`
- Added in logic:
- Copying of a BLOB within one or different containers (with metadata if needed)
- Moving of a BLOB within one or different containers (with metadata if needed)
- Getting properties of: BLOB, Container, BLOB Service
- Asynchronous iteration through BLOBs (FetchBlobsAsync)
- Batched deletion support. Automatic batches packing if BLOBs amount is greater than 256
- Deletion of all BLOBs in a container
- Deletion of a container
- Support for `null` or empty string as `prefix` argument in `CountBlobsAsync()` and `GetContainerStatisticsAsync()`,
which results in the same result as their simpler overloaded versions
- Support for optional cancellation token in upload methods
- In `DownloadToStreamAsync` optional `targetFileName` parameter
-Added in BlobStorageHelper:
- Getting URI of BLOB and container
-Added in MetadataHelper:
- Method which throws an exception with details if metadata is invalid
-Added `BlobClient` extension method:
- GetMetadataAsync for retrieving metadata of a BLOB as a dictionary
- Bug fixes:
- Fixed bug in DownloadToPathAsync, where the full BLOBs path was used as the file name
- While uploading a BLOB, failed metadata or HTTP headers setting won't cause a failed operation. URI of the BLOB will be returned.
- Package updates.