FonsecaFramework.Azure
2026.4.10.1
See the version list below for details.
dotnet add package FonsecaFramework.Azure --version 2026.4.10.1
NuGet\Install-Package FonsecaFramework.Azure -Version 2026.4.10.1
<PackageReference Include="FonsecaFramework.Azure" Version="2026.4.10.1" />
<PackageVersion Include="FonsecaFramework.Azure" Version="2026.4.10.1" />
<PackageReference Include="FonsecaFramework.Azure" />
paket add FonsecaFramework.Azure --version 2026.4.10.1
#r "nuget: FonsecaFramework.Azure, 2026.4.10.1"
#:package FonsecaFramework.Azure@2026.4.10.1
#addin nuget:?package=FonsecaFramework.Azure&version=2026.4.10.1
#tool nuget:?package=FonsecaFramework.Azure&version=2026.4.10.1
FonsecaFramework.Azure
Azure service integration library for .NET applications.
Overview
FonsecaFramework.Azure is a .NET Standard 2.1 library that provides simplified clients for common Azure services including Blob Storage, File Shares, Azure Communication Services (email), Azure AI / OpenAI chat, Azure DevOps work items, and an LLM chatbot helper with conversation history management.
Installation
dotnet add package FonsecaFramework.Azure
Features
| Area | Key Classes |
|---|---|
| Blob Storage | AzureBlobClient — upload, list, and delete blobs |
| File Shares | AzureFileClient — connect to Azure File Shares |
EmailService — send emails (with optional attachments) via Azure Communication Services |
|
| AI / OpenAI Chat | AzureAIClient — send and stream chat completions with conversation history and token management |
| LLM Chatbot | LlmChatBot — provider-agnostic chatbot with built-in conversation history |
| Azure DevOps | AzureDevOpsClient — query work items via WIQL |
Examples
Upload a File to Azure Blob Storage
using FonsecaFramework.Azure.Blob;
var blobClient = new AzureBlobClient("<connection-string>", "my-container");
using var stream = File.OpenRead("report.pdf");
string uri = await blobClient.UploadFileAsync("reports/report.pdf", stream);
Console.WriteLine($"Uploaded to: {uri}");
List and Delete Blobs
var blobClient = new AzureBlobClient("<connection-string>", "my-container");
List<string> files = await blobClient.ListFileNamesAsync();
foreach (var file in files)
Console.WriteLine(file);
bool deleted = await blobClient.DeleteBlobIfExistsAsync(
"reports/old-report.pdf",
Azure.Storage.Blobs.Models.DeleteSnapshotsOption.IncludeSnapshots);
Send an Email with Azure Communication Services
using FonsecaFramework.Azure.CommunicationService;
var emailService = new EmailService("<communication-services-connection-string>");
bool sent = await emailService.SendEmailAsync(
Sender: "no-reply@yourdomain.com",
Subject: "Welcome!",
Content: "<h1>Hello</h1><p>Thanks for signing up.</p>",
Recipients: new List<string> { "customer@example.com" });
Chat with Azure AI (OpenAI)
using FonsecaFramework.Azure.AI;
var aiClient = new AzureAIClient(
subscriptionKey: "<api-key>",
endpoint: "https://your-resource.openai.azure.com/openai/deployments/gpt-4/chat/completions?api-version=2024-02-01",
client: new HttpClient(),
logger: loggerFactory.CreateLogger<AzureAIClient>());
string response = await aiClient.GetChatResponse(
behavior: SystemBehavior.Default,
userMessage: "Summarize the benefits of cloud computing.");
Console.WriteLine(response);
Provider-Agnostic LLM Chatbot
using FonsecaFramework.Azure;
var chatBot = new LlmChatBot();
string reply = await chatBot.ProcessLLMCall(
llmProviderCall: async (history) =>
{
// Call any LLM provider with the full conversation history
return await MyLlmService.GetResponseAsync(history);
},
userPrompt: "What is dependency injection?");
Console.WriteLine(reply);
chatBot.ClearChatHistory();
Query Azure DevOps Work Items
using FonsecaFramework.Azure.DevOps;
var devOpsClient = new AzureDevOpsClient(
organization: "myorg",
project: "myproject",
personalAccessToken: "<pat>",
httpClient: new HttpClient(),
logger: loggerFactory.CreateLogger<AzureDevOpsClient>());
var workItems = await devOpsClient.GetWorkItemsAsync(
"SELECT [System.Id], [System.Title] FROM WorkItems WHERE [System.State] = 'Active'");
foreach (var item in workItems)
Console.WriteLine($"{item.Id}: {item.Title}");
Requirements
- .NET Standard 2.1 compatible runtime
- Azure subscription for the services you intend to use
License
Copyright 2025 Steven Fonseca / VLR Creations
Licensed under the Apache License, Version 2.0. You may use this library free of charge, provided you include the required attribution notices. See the LICENSE file for full terms.
| 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.Communication.Email (>= 1.1.0)
- Azure.Data.Tables (>= 12.11.0)
- Azure.Identity (>= 1.20.0)
- Azure.Storage.Blobs (>= 12.27.0)
- Azure.Storage.Files.Shares (>= 12.25.0)
- FonsecaFramework (>= 2026.4.10.1)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.5)
- System.Text.Encodings.Web (>= 10.0.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.5.21.1 | 0 | 5/22/2026 |
| 2026.5.20.1 | 62 | 5/20/2026 |
| 2026.5.12.1 | 93 | 5/13/2026 |
| 2026.5.11.1 | 98 | 5/11/2026 |
| 2026.5.7.2 | 108 | 5/7/2026 |
| 2026.5.7.1 | 89 | 5/7/2026 |
| 2026.5.6.1 | 97 | 5/6/2026 |
| 2026.5.5.1 | 98 | 5/5/2026 |
| 2026.5.2.1 | 98 | 5/2/2026 |
| 2026.4.30.1 | 96 | 4/30/2026 |
| 2026.4.29.1 | 112 | 4/29/2026 |
| 2026.4.27.1 | 97 | 4/28/2026 |
| 2026.4.22.1 | 96 | 4/22/2026 |
| 2026.4.21.1 | 96 | 4/21/2026 |
| 2026.4.20.1 | 95 | 4/20/2026 |
| 2026.4.15.1 | 99 | 4/15/2026 |
| 2026.4.13.1 | 107 | 4/13/2026 |
| 2026.4.10.1 | 97 | 4/10/2026 |
| 2026.4.8.1 | 106 | 4/8/2026 |
| 2026.4.7.1 | 107 | 4/7/2026 |