The Azure SDK team is pleased to announce our March 2024 client library releases.

44 packages released this month.

Stable Packages (18)

  • Communication Common

  • Communication Messages

  • Core - Client - Core

  • Event Grid

  • Event Hubs

  • Event Hubs - Event Processor

  • Key Vault - Administration

  • Key Vault - Certificates

  • Key Vault - Keys

  • Key Vault - Secrets

  • Resource Management - Batch

  • Resource Management - Communication

  • Resource Management - Compute

  • Resource Management - Confluent

  • Resource Management - IoT Firmware Defense

  • Resource Management - Recovery Services Site Recovery

  • Resource Management - Redis Enterprise

  • WebJobs Extensions - Event Hubs

Patch Updates (9)

  • Azure client library integration for ASP.NET Core

  • Blob Storage Key Store for .NET Data Protection

  • Event Hubs

  • Event Hubs - Event Processor

  • Key Encryptor for .NET Data Protection

  • Resource Management - Resource Manager

  • Secrets Configuration Provider for .NET

  • Service Bus

  • WebJobs Extensions - Service Bus

Beta Packages (15)

  • App Configuration

  • Azure AI Search

  • Communication Phone Numbers

  • Defender EASM

  • Document Intelligence

  • Health Insights

  • Image Analysis

  • OpenAI Assistants

  • OpenAI Inference

  • OpenTelemetry AspNetCore

  • Resource Management - Chaos

  • Resource Management - NetApp Files

  • Resource Management - Resource Mover

  • Resource Management - Support

  • System.ClientModel

Release highlights

App Configuration 1.4.0-beta.1 Changelog

Features Added

  • Added property MatchConditions to SettingSelector which allows specifying request conditions to GetConfigurationSettings requests.

Azure AI Search 11.6.0-beta.3 Changelog

Features Added

  • Added the VectorSearch.Compressions property, which can be utilized to configure options specific to the compression method used during indexing or querying.
  • Added the SearchField.IsStored, VectorSearchField.IsStored, and VectorSearchFieldAttribute.IsStored property. It represent an immutable value indicating whether the field will be persisted separately on disk to be returned in a search result. This property is applicable only for vector fields.
  • Added support for sbyte and int16 to SearchFieldDataType.

Azure client library integration for ASP.NET Core 1.7.2 Changelog

Bugs Fixed

  • Fix several issues related to ThreadPool starvation for synchronous scenarios

Blob Storage Key Store for .NET Data Protection 1.3.3 Changelog

Bugs Fixed

  • Fix several issues related to ThreadPool starvation for synchronous scenarios

Communication Common 1.3.0 Changelog

Features Added

  • Added support for a new communication identifier MicrosoftTeamsAppIdentifier.
  • Introduction of MicrosoftTeamsAppIdentifier is a breaking change. It will impact any code that previously depended on the use of UnknownIdentifier with rawIDs starting with 28:orgid:, 28:dod:, or 28:gcch:.

Communication Messages 1.0.0 Changelog

Features Added

  • Introduced additional constructors for MessageTemplateClient and NotificationMessagesClient to support TokenCredential authentication methods.
  • Introduced a variety of Notification Content models such as MediaNotificationContent, TemplateNotificationContent, and TextNotificationContent, enabling more polymorphic notification types.
  • Introduced a variety of message template value models such as MessageTemplateDocument, MessageTemplateImage, MessageTemplateVideo, etc., enabling more polymorphic message template values.
  • Added new namespace specific to WhatsApp message templates, including WhatsAppMessageTemplateBindings, WhatsAppMessageTemplateBindingsButton, and WhatsAppMessageButtonSubType, etc.
  • Updated CommunicationMessagesClientOptions to include a new service version V2024_02_01 and expanded CommunicationMessagesModelFactory with factory methods for new model types.

Breaking Changes

  • Removed the SendMessageOptions class in favor of more granular method overloads (NotificationContent subclasses) in NotificationMessagesClient.
  • Changed the way to construct MessageTemplate including message template bindings and values.
  • Changed MessageTemplateItem class to support polymorphism, with the introduction of a child class WhatsAppMessageTemplateItem containing WhatsApp-specific template contracts.
  • Added GeoPosition struct to encapsulate geographic coordinates into a single entity. This change affects any functionality that previously required separate latitude and longitude inputs.

Communication Phone Numbers 1.3.0-beta.4 Changelog

Other changes

  • Added unmerged beta releases

Core - Client - Core 1.38.0 Changelog

Features Added

  • Add GetRehydrationToken to Operation for rehydration purpose.

Defender EASM 1.0.0-beta.1 Changelog

  • Defender Azure EASM (External Attack Surface Management) client library for Java. This package contains Microsoft Azure EASM client library.

Document Intelligence 1.0.0-beta.2 Changelog

Features Added

  • Added property BaseClassifierId to BuildDocumentClassifierContent.
  • Added property BaseClassifierId to DocumentClassifierDetails.
  • Added property Warnings to DocumentModelDetails.
  • Added property Warnings to DocumentClassifierDetails.
  • Added property SelectionGroup to DocumentFieldType.
  • Added property ValueSelectionGroup to DocumentField.
  • Added member Completed to OperationDetails.

Breaking Changes

  • DocumentIntelligenceClient and DocumentIntelligenceAdministrationClient now target service API version 2024-02-29-preview. Support for 2023-10-31-preview has been removed.
  • Renamed class AIDocumentIntelligenceModelFactory to DocumentIntelligenceModelFactory.
  • Renamed class AzureAIDocumentIntelligenceClientOptions to DocumentIntelligenceClientOptions.
  • Renamed class AIDocumentIntelligenceClientBuilderExtensions to DocumentIntelligenceClientBuilderExtensions.
  • In DocumentField:
  • Renamed property ValueArray to ValueList.
  • Renamed property ValueInteger to ValueLong.
  • Renamed property ValueNumber to ValueDouble.
  • Renamed property ValueObject to ValueDictionary.
  • In DocumentFieldType:
  • Renamed property Array to List.
  • Renamed property Integer to Long.
  • Renamed property Number to Double.
  • Renamed property Object to Dictionary.
  • Renamed class FontStyle to DocumentFontStyle.
  • Renamed class FontWeight to DocumentFontWeight.
  • In DocumentClassifierDetails, renamed properties CreatedDateTime and ExpirationDateTime to CreatedOn and ExpiresOn, respectively.
  • In DocumentModelDetails, renamed properties CreatedDateTime and ExpirationDateTime to CreatedOn and ExpiresOn, respectively.
  • In OperationDetails, renamed properties CreatedDateTime and LastUpdatedDateTime to CreatedOn and LastUpdatedOn, respectively.
  • In QuotaDetails, renamed property QuotaResetDateTime to QuotaResetsOn.
  • In DocumentBarcodeKind:
  • Renamed property EAN13 to Ean13.
  • Renamed property EAN8 to Ean8.
  • Renamed property ITF to Itf.
  • Renamed property MicroQRCode to MicroQrCode.
  • Renamed property PDF417 to Pdf417.
  • Renamed property QRCode to QrCode.
  • Renamed property UPCA to Upca.
  • Renamed property UPCE to Upce.

Event Grid 4.22.0 Changelog

Features Added

  • Added new Storage Task Assignment system events.
  • Added new AVS system events.
  • Added Metadata property to AcsChatThreadCreatedEventData system event.

Event Hubs 5.11.0 Changelog

Features Added

  • Added a CheckpointPosition struct to Azure.Messaging.EventHubs.Processor to use when updating a checkpoint. The specified position indicates that an event processor should begin reading from the next event. Added new UpdateCheckpointAsync overloads to CheckpointStore, PluggableCheckpointStoreEventProcessor<TPartition and EventProcessor<TPartition> that accept the CheckpointPosition struct instead of individual values for offset and sequence number.

Breaking Changes

  • The type of several existing values in the EventData.SystemProperties collection have been changed so that they are properly represented as .NET string types. Previously, the underlying AMQP types were unintentionally returned, forcing callers to call ToString() to read the value.

This is a behavioral breaking change that will impacts only those callers who were explicitly casting system property values to AmqpAddress or AmqpMessageId before calling ToString(). The affected system properties are:

  • MessageId
  • CorrelationId
  • To
  • ReplyTo

  • The base implementations of both UpdateCheckpointAsync method overloads in PluggableCheckpointStoreEventProcessor<TPartition> and EventProcessor<TPartition> now choose sequence number over offset when writing a checkpoint and both values are provided. Previously, writing a checkpoint prioritized offset over sequence number. There is no behavioral change for those using the official checkpoint store implementations.

Bugs Fixed

  • Load balancing is no longer blocked when event processing for a lost partition does not honor the cancellation token. Previously, long-running processing could cause delays in load balancing that resulted in ownership not being renewed for all partitions.

  • Adjusted retries to consider an unreachable host address as terminal. Previously, all socket-based errors were considered transient and would be retried.

  • Fixed a race condition that could lead to a synchronization primitive being double-released if IsRunning was called concurrently while starting or stopping an event processor.

  • Fixed an issue with event processor validation where an exception for quota exceeded may inappropriately be surfaced when starting the processor.

  • In the rare case that an event processor’s load balancing and health monitoring task cannot recover from an error, it will now properly surrender ownership when processing stops.

  • Reduced the timeout for transient service failures when starting the buffered producer. This ixed an issue where the buffered producer appeared to hang for an extended period of time when starting if it had issues querying Event Hub metadata for the first time.

  • Fixed the logic used to set the TimeToLive value of the AmqpMessageHeader for received messages to be based on the difference of the AbsoluteExpiryTime and CreationTime properties of the AmqpMessageProperties.

Event Hubs 5.11.1 Changelog

Other Changes

  • Updated the Microsoft.Azure.Amqp dependency to 2.6.5, which includes several bug fixes. A notable fix addresses an obscure race condition when a cancellation token is signaled while service operations are being invoked concurrently which caused those operations to hang.

Event Hubs - Event Processor 5.11.0 Changelog

Features Added

  • Added a CheckpointPosition struct to use when updating a checkpoint. The specified position indicates that an event processor should begin reading from the next event. Added new UpdateCheckpointAsync overloads to EventProcessorClient and BlobCheckpointStore that accept the CheckpointPosition struct instead of individual values for offset and sequence number.

Breaking Changes

  • The type of several existing values in the EventData.SystemProperties collection have been changed so that they are properly represented as .NET string types. Previously, the underlying AMQP types were unintentionally returned, forcing callers to call ToString() to read the value.

This is a behavioral breaking change that will impacts only those callers who were explicitly casting system property values to AmqpAddress or AmqpMessageId before calling ToString(). The affected system properties are:

  • MessageId
  • CorelationId
  • To
  • ReplyTo

  • The base implementations of both UpdateCheckpointAsync method overloads in PluggableCheckpointStoreEventProcessor<TPartition> and EventProcessor<TPartition> now choose sequence number over offset when writing a checkpoint and both values are provided. Previously, writing a checkpoint prioritized offset over sequence number. There is no difference in behavior for normal usage scenarios.

Bugs Fixed

  • Fixed a race condition that could lead to a synchronization primitive being double-released if IsRunning was called concurrently while starting or stopping the processor.

  • Fixed a bug in which cancellation honored by the processor was interpreted as an error surfaced by developer code and a warning was inappropriately emitted to the error handler.

  • Fixed an issue with event processor validation where an exception for quota exceeded may inappropriately be surfaced when starting the processor.

  • In the rare case that an event processor’s load balancing and health monitoring task cannot recover from an error, it will now properly surrender ownership when processing stops.

Event Hubs - Event Processor 5.11.1 Changelog

Other Changes

  • Updated the Microsoft.Azure.Amqp dependency to 2.6.5, which includes several bug fixes. A notable fix addresses an obscure race condition when a cancellation token is signaled while service operations are being invoked concurrently which caused those operations to hang.

Health Insights 1.0.0-beta.1 Changelog

  • Initial preview of the Azure.Health.Insights.RadiologyInsights client library.

Image Analysis 1.0.0-beta.2 Changelog

Breaking Changes

The imageContent parameter for the Analyze(BinaryData imageData, …) method has been renamed to imageData. The imageContent parameter for the Analyze(Uri imageUri, …) method has been renamed to imageUri

Key Encryptor for .NET Data Protection 1.2.3 Changelog

Bugs Fixed

  • Fix several issues related to ThreadPool starvation for synchronous scenarios

Key Vault - Administration 4.4.0 Changelog

Bugs Fixed

  • When a Key Vault is moved to another tenant, the client is reauthenticated.

Features Added

  • The sasToken parameter is now optional in KeyVaultBackupClient.StartBackup and StartBackupAsync. Managed Identity will be used instead if sasToken is null.
  • The sasToken parameter is now optional in KeyVaultBackupClient.StartRestore and StartRestoreAsync. Managed Identity will be used instead if sasToken is null.
  • The sasToken parameter is now optional in KeyVaultBackupClient.StartSelectiveKeyRestore and StartSelectiveKeyRestoreAsync. Managed Identity will be used instead if sasToken is null.

Breaking Changes

  • KeyVaultBackupOperation, KeyVaultRestoreOperation, and KeyVaultSelectiveKeyRestoreOperation now throw a RequestFailedException with a different error message - but a raw Response with more details - when the service returns an error response. (#41855)

Key Vault - Certificates 4.6.0 Changelog

Bugs Fixed

  • When a Key Vault is moved to another tenant, the client is reauthenticated.

Features Added

  • Added CertificateProperties.X509ThumbprintString to return the hexadecimal string representation of the SHA-1 hash of the certificate. CertificateProperties.X509Thumbprint has been hidden but is still available.

Breaking Changes

  • Renamed tags reported on CertificateClient activities to following OpenTelemetry attribute naming conventions:
  • certificate to az.keyvault.certificate.name
  • version to az.keyvault.certificate.version
  • issuer to az.keyvault.certificate.issuer.name

Key Vault - Keys 4.6.0 Changelog

Bugs Fixed

  • When a Key Vault is moved to another tenant, the client is reauthenticated.
  • KeyRotationPolicyAction performs case-insensitive comparisons since Key Vault and Managed HSM return different cases for “rotate”.

Features Added

  • Added CryptographyClient.CreateRSA and CreateRSAAsync to create an RSA implementation backed by Key Vault or Managed HSM. Use this anywhere an RSA or AsymmetricAlgorithm is required. (#3545)
  • Added KeyProperties.HsmPlatform to get the underlying HSM platform.

Breaking Changes

  • Renamed tags reported on KeyClient, KeyResolver, CryptographyClient, and RemoteCryptographyClient activities to follow OpenTelemetry attribute naming conventions:
  • key to az.keyvault.key.id or az.keyvault.key.name depending on the value being reported
  • version to az.keyvault.key.version

Key Vault - Secrets 4.6.0 Changelog

Breaking Changes

  • Renamed tags reported on SecretClient activities to follow OpenTelemetry attribute naming conventions:
  • secret to az.keyvault.secret.name
  • version to az.keyvault.secret.version

OpenAI Assistants 1.0.0-beta.3 Changelog

Bugs Fixed

  • Incorporates a specification fix for message image file content that caused generated image file IDs (e.g. from the Code Interpreter tool) to not properly appear in messages

OpenAI Inference 1.0.0-beta.14 Changelog

Breaking Changes

“On Your Data” changes:

  • Introduced a new type AzureChatExtensionDataSourceResponseCitation for a more structured representation of citation data.
  • Correspondingly, updated AzureChatExtensionsMessageContext:
  • Replaced Messages with Citations of type AzureChatExtensionDataSourceResponseCitation.
  • Added Intent as a string type.
  • Renamed “AzureCognitiveSearch” to “AzureSearch”:
  • AzureCognitiveSearchChatExtensionConfiguration is now AzureSearchChatExtensionConfiguration.
  • AzureCognitiveSearchIndexFieldMappingOptions is now AzureSearchIndexFieldMappingOptions.
  • Check the project README for updated code snippets.

Features Added

  • Text-to-speech using OpenAI TTS models is now supported. See OpenAI’s API reference or the Azure OpenAI quickstart for detailed overview and background information.
  • The new method GenerateSpeechFromText exposes this capability on OpenAIClient.
  • Text-to-speech converts text into lifelike spoken audio in a chosen voice, together with other optional configurations.
  • This method works for both Azure OpenAI and non-Azure api.openai.com client configurations

OpenTelemetry AspNetCore 1.2.0-beta.1 Changelog

Features Added

  • Added Azure Container Apps resource detector. (#41803)

  • Added Azure.Monitor.OpenTelemetry.LiveMetrics, enabling the sending of live metrics data. The newly added EnableLiveMetrics property is set to true by default. This property can be set to false to disable live metrics. (#41872)

  • Added an experimental feature for logs emitted within an active tracing context to follow the Activity’s sampling decision. The feature can be enabled by setting OTEL_DOTNET_AZURE_MONITOR_EXPERIMENTAL_ENABLE_LOG_SAMPLING environment variable to true. (#41665)

Resource Management - Batch 1.4.0 Changelog

Resource Management - Chaos 1.1.0-beta.1 Changelog

Resource Management - Communication 1.2.0 Changelog

Resource Management - Compute 1.4.0 Changelog

Resource Management - Confluent 1.2.0 Changelog

Resource Management - IoT Firmware Defense 1.0.0 Changelog

Resource Management - NetApp Files 1.5.0-beta.1 Changelog

Resource Management - Recovery Services Site Recovery 1.2.0 Changelog

Resource Management - Redis Enterprise 1.1.0 Changelog

Resource Management - Resource Manager 1.10.2 Changelog

Resource Management - Resource Mover 1.1.2-beta.1 Changelog

Resource Management - Support 1.1.0-beta.4 Changelog

Secrets Configuration Provider for .NET 1.3.1 Changelog

Bugs Fixed

  • Fix several issues related to ThreadPool starvation for synchronous scenarios

Service Bus 7.17.3 Changelog

Bugs Fixed

  • Fixed draining of credits when prefetch is enabled.
  • No longer drain credits when using the ServiceBusSessionProcessor as it is not necessary unless the ServiceBusSessionProcessorOptions.SessionIds property is set.

Service Bus 7.17.4 Changelog

Bugs Fixed

  • When creating a new ServiceBusMessage from an existing ServiceBusReceivedMessage, diagnostic properties will now be properly reset. Previously, they were incorrectly retained which led to the new message being indistinguishable from the old in traces.

System.ClientModel 1.1.0-beta.2 Changelog

Features Added

  • Added ExtractResponse method to PipelineMessage to enable returning an undisposed PipelineResponse from protocol methods.
  • Added CreateAsync factory method to ClientResultException to allow creating exceptions in an async context.
  • Added an implicit cast from string to ApiKeyCredential.
  • Added an implicit cast from ClientResult<T> to T.

Breaking Changes

  • Changed HttpClientPipelineTransport.Shared and ClientRetryPolicy.Default from static readonly fields to static properties.
  • Changed PipelineResponse.Content property from abstract to virtual.
  • Removed the ResponseBufferingPolicy and moved response buffering functionality into PipelineTransport.

WebJobs Extensions - Event Hubs 6.1.0 Changelog

Bugs Fixed

  • The SystemProperties binding will now return certain item as string values instead of an AMQP structure that requires calling ToString() to read. The affected system properties are:
  • MessageId
  • CorelationId
  • To
  • ReplyTo

  • Avoid race condition when determining whether to checkpoint when the host is in the process of shutting down.

WebJobs Extensions - Event Hubs 6.2.0 Changelog

Other Changes

  • Adjusted checkpointing logic to no longer write a checkpoint when the listener is shutting down. This was necessary to prevent potential data loss from occurring when shutting down Function retries. Because the trigger cannot know if the Function host would have retried a failure if it were not shutting down, we cannot assume that it is safe to checkpoint. This change ensures that the batch of events being processed when shut down was requested will be retried by another instance or the next time the Function app is run.

  • Updated the Azure.Messaging.EventHubs, which includes a new build of the AMQP transport library. The notable bug fix addresses an obscure race condition when a cancellation token is signaled while service operations are being invoked concurrently which caused those operations to hang.

WebJobs Extensions - Service Bus 5.13.6 Changelog

Other Changes

  • Updated the Azure.Messaging.ServiceBus, which includes a new build of the AMQP transport library. One notable but fix addresses an obscure race condition when a cancellation token is signaled while service operations are being invoked concurrently which caused those operations to hang. Another notable fix is for an obscure race condition that occurred when attempting to complete a message which caused the operation to hang.

Latest Releases

View all the latest versions of .NET packages here.

Installation Instructions

To install any of our packages, please search for them via Manage NuGet Packages... in Visual Studio (with Include prerelease checked) or copy these commands into your terminal:

$> dotnet add package Azure.AI.DocumentIntelligence --version 1.0.0-beta.2
$> dotnet add package Azure.AI.OpenAI --version 1.0.0-beta.14
$> dotnet add package Azure.AI.OpenAI.Assistants --version 1.0.0-beta.3
$> dotnet add package Azure.AI.Vision.ImageAnalysis --version 1.0.0-beta.2
$> dotnet add package Azure.Analytics.Defender.Easm --version 1.0.0-beta.1
$> dotnet add package Azure.Communication.Common --version 1.3.0
$> dotnet add package Azure.Communication.Messages --version 1.0.0
$> dotnet add package Azure.Communication.PhoneNumbers --version 1.3.0-beta.4
$> dotnet add package Azure.Core --version 1.38.0
$> dotnet add package Azure.Data.AppConfiguration --version 1.4.0-beta.1
$> dotnet add package Azure.Extensions.AspNetCore.Configuration.Secrets --version 1.3.1
$> dotnet add package Azure.Extensions.AspNetCore.DataProtection.Blobs --version 1.3.3
$> dotnet add package Azure.Extensions.AspNetCore.DataProtection.Keys --version 1.2.3
$> dotnet add package Azure.Health.Insights.RadiologyInsights --version 1.0.0-beta.1
$> dotnet add package Azure.Messaging.EventGrid --version 4.22.0
$> dotnet add package Azure.Messaging.EventHubs --version 5.11.0
$> dotnet add package Azure.Messaging.EventHubs --version 5.11.1
$> dotnet add package Azure.Messaging.EventHubs.Processor --version 5.11.0
$> dotnet add package Azure.Messaging.EventHubs.Processor --version 5.11.1
$> dotnet add package Azure.Messaging.ServiceBus --version 7.17.3
$> dotnet add package Azure.Messaging.ServiceBus --version 7.17.4
$> dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore --version 1.2.0-beta.1
$> dotnet add package Azure.ResourceManager --version 1.10.2
$> dotnet add package Azure.ResourceManager.Batch --version 1.4.0
$> dotnet add package Azure.ResourceManager.Chaos --version 1.1.0-beta.1
$> dotnet add package Azure.ResourceManager.Communication --version 1.2.0
$> dotnet add package Azure.ResourceManager.Compute --version 1.4.0
$> dotnet add package Azure.ResourceManager.Confluent --version 1.2.0
$> dotnet add package Azure.ResourceManager.IotFirmwareDefense --version 1.0.0
$> dotnet add package Azure.ResourceManager.NetApp --version 1.5.0-beta.1
$> dotnet add package Azure.ResourceManager.RecoveryServicesSiteRecovery --version 1.2.0
$> dotnet add package Azure.ResourceManager.RedisEnterprise --version 1.1.0
$> dotnet add package Azure.ResourceManager.ResourceMover --version 1.1.2-beta.1
$> dotnet add package Azure.ResourceManager.Support --version 1.1.0-beta.4
$> dotnet add package Azure.Search.Documents --version 11.6.0-beta.3
$> dotnet add package Azure.Security.KeyVault.Administration --version 4.4.0
$> dotnet add package Azure.Security.KeyVault.Certificates --version 4.6.0
$> dotnet add package Azure.Security.KeyVault.Keys --version 4.6.0
$> dotnet add package Azure.Security.KeyVault.Secrets --version 4.6.0
$> dotnet add package Microsoft.Azure.WebJobs.Extensions.EventHubs --version 6.1.0
$> dotnet add package Microsoft.Azure.WebJobs.Extensions.EventHubs --version 6.2.0
$> dotnet add package Microsoft.Azure.WebJobs.Extensions.ServiceBus --version 5.13.6
$> dotnet add package Microsoft.Extensions.Azure --version 1.7.2
$> dotnet add package System.ClientModel --version 1.1.0-beta.2

Feedback

If you have a bug or feature request for one of the libraries, please file an issue in our repo.