Iciclecreek.Azure.Storage.Memory
1.0.2
See the version list below for details.
dotnet add package Iciclecreek.Azure.Storage.Memory --version 1.0.2
NuGet\Install-Package Iciclecreek.Azure.Storage.Memory -Version 1.0.2
<PackageReference Include="Iciclecreek.Azure.Storage.Memory" Version="1.0.2" />
<PackageVersion Include="Iciclecreek.Azure.Storage.Memory" Version="1.0.2" />
<PackageReference Include="Iciclecreek.Azure.Storage.Memory" />
paket add Iciclecreek.Azure.Storage.Memory --version 1.0.2
#r "nuget: Iciclecreek.Azure.Storage.Memory, 1.0.2"
#:package Iciclecreek.Azure.Storage.Memory@1.0.2
#addin nuget:?package=Iciclecreek.Azure.Storage.Memory&version=1.0.2
#tool nuget:?package=Iciclecreek.Azure.Storage.Memory&version=1.0.2
![]()
Iciclecreek.Azure.Storage.Memory
A thread-safe, in-memory drop-in replacement for Azure.Storage.Blobs, Azure.Data.Tables, and Azure.Storage.Queues clients. Use the same Azure SDK types in tests without any disk I/O, databases, or external services.
Objects returned from reads are deep-cloned to properly simulate network storage semantics — no shared references, no accidental cache hits.
Installation
dotnet add package Iciclecreek.Azure.Storage.Memory
Usage
Create a provider and account
using Iciclecreek.Azure.Storage.Memory;
using Iciclecreek.Azure.Storage.Memory.Blobs;
using Iciclecreek.Azure.Storage.Memory.Tables;
using Iciclecreek.Azure.Storage.Memory.Queues;
var provider = new MemoryStorageProvider();
var account = provider.AddAccount("devaccount");
Blobs
BlobContainerClient container = MemoryBlobContainerClient.FromAccount(account, "my-container");
await container.CreateIfNotExistsAsync();
BlobClient blob = container.GetBlobClient("hello.txt");
await blob.UploadAsync(BinaryData.FromString("Hello, World!"));
var result = (await blob.DownloadContentAsync()).Value;
Console.WriteLine(result.Content.ToString()); // "Hello, World!"
Tables
TableClient table = MemoryTableClient.FromAccount(account, "people");
await table.CreateIfNotExistsAsync();
await table.AddEntityAsync(new TableEntity("users", "alice") { ["Name"] = "Alice" });
var entity = (await table.GetEntityAsync<TableEntity>("users", "alice")).Value;
Queues
QueueClient queue = MemoryQueueClient.FromAccount(account, "tasks");
queue.Create();
queue.SendMessage("do the thing");
var msg = queue.ReceiveMessage().Value;
Console.WriteLine(msg.Body.ToString()); // "do the thing"
Swap in via dependency injection
Every Memory* client inherits from its Azure SDK base type:
// Production
services.AddSingleton<BlobContainerClient>(
new BlobContainerClient(connectionString, "images"));
// Test
var provider = new MemoryStorageProvider();
var account = provider.AddAccount("test");
services.AddSingleton<BlobContainerClient>(
MemoryBlobContainerClient.FromAccount(account, "images"));
Related Packages
| Package | Description |
|---|---|
| Iciclecreek.Azure.Storage.FileSystem | Filesystem-backed implementation (files on disk) |
| Iciclecreek.Azure.Storage.SQLite | SQLite-backed implementation (single .db file per account) |
| Iciclecreek.Azure.Storage.Server | ASP.NET Core REST API server on top of any provider |
License
MIT
| 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 was computed. 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 | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | 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.1
- Azure.Data.Tables (>= 12.11.0)
- Azure.Storage.Blobs (>= 12.28.0)
- Azure.Storage.Queues (>= 12.26.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Iciclecreek.Azure.Storage.Memory:
| Package | Downloads |
|---|---|
|
LottaDB.Memory
In-memory storage provider for LottaDB. Adds UseMemory() extension method for fast unit testing with no disk I/O. |
|
|
BenchmarkSuite
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.