FonsecaFramework.Azure 2026.4.8.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package FonsecaFramework.Azure --version 2026.4.8.1
                    
NuGet\Install-Package FonsecaFramework.Azure -Version 2026.4.8.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FonsecaFramework.Azure" Version="2026.4.8.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FonsecaFramework.Azure" Version="2026.4.8.1" />
                    
Directory.Packages.props
<PackageReference Include="FonsecaFramework.Azure" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FonsecaFramework.Azure --version 2026.4.8.1
                    
#r "nuget: FonsecaFramework.Azure, 2026.4.8.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FonsecaFramework.Azure@2026.4.8.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FonsecaFramework.Azure&version=2026.4.8.1
                    
Install as a Cake Addin
#tool nuget:?package=FonsecaFramework.Azure&version=2026.4.8.1
                    
Install as a Cake Tool

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
Email 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
Loading failed