From ad78fc3e766dc7de2a0af5414d6bf4a077899721 Mon Sep 17 00:00:00 2001 From: kurnakovv <59327306+kurnakovv@users.noreply.github.com> Date: Wed, 1 Oct 2025 00:25:16 +0900 Subject: [PATCH 01/13] Add code example for CA1002 rule (#48762) (#48763) --- .../code-analysis/quality-rules/ca1002.md | 6 ++++ .../snippets/csharp/all-rules/ca1002.cs | 32 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 docs/fundamentals/code-analysis/quality-rules/snippets/csharp/all-rules/ca1002.cs diff --git a/docs/fundamentals/code-analysis/quality-rules/ca1002.md b/docs/fundamentals/code-analysis/quality-rules/ca1002.md index e7ab8e82def88..2cbd1731aa77d 100644 --- a/docs/fundamentals/code-analysis/quality-rules/ca1002.md +++ b/docs/fundamentals/code-analysis/quality-rules/ca1002.md @@ -10,6 +10,8 @@ helpviewer_keywords: - DoNotExposeGenericLists author: gewarren ms.author: gewarren +dev_langs: + - CSharp --- # CA1002: Do not expose generic lists @@ -45,6 +47,10 @@ By default, this rule only looks at externally visible types, but this is [confi To fix a violation of this rule, change the type to one of the generic collections that's designed for inheritance. +## Example + +:::code language="csharp" source="snippets/csharp/all-rules/ca1002.cs" id="snippet1"::: + ## When to suppress warnings Do not suppress a warning from this rule unless the assembly that raises this warning is not meant to be a reusable library. For example, it would be safe to suppress this warning in a performance-tuned application where a performance benefit was gained from the use of generic lists. diff --git a/docs/fundamentals/code-analysis/quality-rules/snippets/csharp/all-rules/ca1002.cs b/docs/fundamentals/code-analysis/quality-rules/snippets/csharp/all-rules/ca1002.cs new file mode 100644 index 0000000000000..3440b130d48c3 --- /dev/null +++ b/docs/fundamentals/code-analysis/quality-rules/snippets/csharp/all-rules/ca1002.cs @@ -0,0 +1,32 @@ +using System.Collections.Generic; + +namespace ca1001 +{ + // + // This class violates the rule. + public class MutableItems + { + // CA1002: Change 'List' in 'MutableItems.Items' to + // use 'Collection', 'ReadOnlyCollection' or 'KeyedCollection'. + public List Items { get; } = new List(); + + public void Add(string item) + { + Items.Add(item); + } + } + + // This class satisfies the rule. + public class ReadOnlyItems + { + private readonly List _items = new List(); + + public IReadOnlyCollection Items => _items.AsReadOnly(); + + public void Add(string item) + { + _items.Add(item); + } + } + // +} From a3190d69f2b362a18c0b8447421ac8105f97b26e Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Tue, 30 Sep 2025 08:38:35 -0700 Subject: [PATCH 02/13] Update package index with latest published versions (#48782) --- docs/azure/includes/dotnet-all.md | 1 + docs/azure/includes/dotnet-new.md | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md index aefc71739e4a1..d79ed6712f1d1 100644 --- a/docs/azure/includes/dotnet-all.md +++ b/docs/azure/includes/dotnet-all.md @@ -205,6 +205,7 @@ | Resource Management - Compute | NuGet [1.12.0](https://www.nuget.org/packages/Azure.ResourceManager.Compute/1.12.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Compute-readme) | GitHub [1.12.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Compute_1.12.0/sdk/compute/Azure.ResourceManager.Compute/) | | Resource Management - Compute Fleet | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.ComputeFleet/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.ComputeFleet-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ComputeFleet_1.0.0/sdk/computefleet/Azure.ResourceManager.ComputeFleet/) | | Resource Management - Compute Schedule | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.ComputeSchedule/1.1.0)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ComputeSchedule/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ComputeSchedule-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ComputeSchedule_1.1.0/sdk/computeschedule/Azure.ResourceManager.ComputeSchedule/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ComputeSchedule_1.2.0-beta.1/sdk/computeschedule/Azure.ResourceManager.ComputeSchedule/) | +| Resource Management - Compute.Recommender | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.Compute.Recommender/1.0.0-beta.1) | | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Compute.Recommender_1.0.0-beta.1/sdk/computerecommender/Azure.ResourceManager.Compute.Recommender/) | | Resource Management - Confidential Ledger | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.ConfidentialLedger/1.0.1)
NuGet [1.1.0-beta.6](https://www.nuget.org/packages/Azure.ResourceManager.ConfidentialLedger/1.1.0-beta.6) | [docs](/dotnet/api/overview/azure/ResourceManager.ConfidentialLedger-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ConfidentialLedger_1.0.1/sdk/confidentialledger/Azure.ResourceManager.ConfidentialLedger/)
GitHub [1.1.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ConfidentialLedger_1.1.0-beta.6/sdk/confidentialledger/Azure.ResourceManager.ConfidentialLedger/) | | Resource Management - Confluent | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.Confluent/1.2.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Confluent-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Confluent_1.2.1/sdk/confluent/Azure.ResourceManager.Confluent/) | | Resource Management - Connected VMware vSphere | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ConnectedVMwarevSphere/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ConnectedVMwarevSphere-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ConnectedVMwarevSphere_1.1.1/sdk/connectedvmwarevsphere/Azure.ResourceManager.ConnectedVMwarevSphere/) | diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md index 323c5032cbf6c..784b0439b7e03 100644 --- a/docs/azure/includes/dotnet-new.md +++ b/docs/azure/includes/dotnet-new.md @@ -215,6 +215,7 @@ | Resource Management - Compute | NuGet [1.12.0](https://www.nuget.org/packages/Azure.ResourceManager.Compute/1.12.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Compute-readme) | GitHub [1.12.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Compute_1.12.0/sdk/compute/Azure.ResourceManager.Compute/) | | Resource Management - Compute Fleet | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.ComputeFleet/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.ComputeFleet-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ComputeFleet_1.0.0/sdk/computefleet/Azure.ResourceManager.ComputeFleet/) | | Resource Management - Compute Schedule | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.ComputeSchedule/1.1.0)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.ComputeSchedule/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ComputeSchedule-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ComputeSchedule_1.1.0/sdk/computeschedule/Azure.ResourceManager.ComputeSchedule/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ComputeSchedule_1.2.0-beta.1/sdk/computeschedule/Azure.ResourceManager.ComputeSchedule/) | +| Resource Management - Compute.Recommender | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.Compute.Recommender/1.0.0-beta.1) | | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Compute.Recommender_1.0.0-beta.1/sdk/computerecommender/Azure.ResourceManager.Compute.Recommender/) | | Resource Management - Confidential Ledger | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.ConfidentialLedger/1.0.1)
NuGet [1.1.0-beta.6](https://www.nuget.org/packages/Azure.ResourceManager.ConfidentialLedger/1.1.0-beta.6) | [docs](/dotnet/api/overview/azure/ResourceManager.ConfidentialLedger-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ConfidentialLedger_1.0.1/sdk/confidentialledger/Azure.ResourceManager.ConfidentialLedger/)
GitHub [1.1.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ConfidentialLedger_1.1.0-beta.6/sdk/confidentialledger/Azure.ResourceManager.ConfidentialLedger/) | | Resource Management - Confluent | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.Confluent/1.2.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Confluent-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Confluent_1.2.1/sdk/confluent/Azure.ResourceManager.Confluent/) | | Resource Management - Connected VMware vSphere | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ConnectedVMwarevSphere/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ConnectedVMwarevSphere-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ConnectedVMwarevSphere_1.1.1/sdk/connectedvmwarevsphere/Azure.ResourceManager.ConnectedVMwarevSphere/) | From 25623f6503fcc3999e3669965ef2d02e8f100c8f Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Tue, 30 Sep 2025 11:24:34 -0700 Subject: [PATCH 03/13] Update package index with latest published versions (#48794) --- docs/azure/includes/dotnet-all.md | 6 +++--- docs/azure/includes/dotnet-new.md | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md index d79ed6712f1d1..c9d978045cf61 100644 --- a/docs/azure/includes/dotnet-all.md +++ b/docs/azure/includes/dotnet-all.md @@ -319,7 +319,7 @@ | Resource Management - Nginx | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.Nginx/1.0.0)
NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.Nginx/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.Nginx-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Nginx_1.0.0/sdk/nginx/Azure.ResourceManager.Nginx/)
GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Nginx_1.1.0-beta.3/sdk/nginx/Azure.ResourceManager.Nginx/) | | Resource Management - Notification Hubs | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.NotificationHubs/1.1.1)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.NotificationHubs/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.NotificationHubs-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NotificationHubs_1.1.1/sdk/notificationhubs/Azure.ResourceManager.NotificationHubs/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NotificationHubs_1.2.0-beta.2/sdk/notificationhubs/Azure.ResourceManager.NotificationHubs/) | | Resource Management - Onlineexperimentation | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.OnlineExperimentation/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.OnlineExperimentation-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.OnlineExperimentation_1.0.0-beta.1/sdk/onlineexperimentation/Azure.ResourceManager.OnlineExperimentation/) | -| Resource Management - Oracle Database | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.OracleDatabase/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.OracleDatabase-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.OracleDatabase_1.1.0/sdk/oracle/Azure.ResourceManager.OracleDatabase/) | +| Resource Management - Oracle Database | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.OracleDatabase/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.OracleDatabase-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.OracleDatabase_1.2.0/sdk/oracle/Azure.ResourceManager.OracleDatabase/) | | Resource Management - Orbital | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Orbital/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Orbital-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Orbital_1.1.1/sdk/orbital/Azure.ResourceManager.Orbital/) | | Resource Management - Palo Alto Networks - Next Generation Firewall | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.PaloAltoNetworks.Ngfw/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.PaloAltoNetworks.Ngfw-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.PaloAltoNetworks.Ngfw_1.1.1/sdk/paloaltonetworks.ngfw/Azure.ResourceManager.PaloAltoNetworks.Ngfw/) | | Resource Management - Peering | NuGet [1.2.2](https://www.nuget.org/packages/Azure.ResourceManager.Peering/1.2.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Peering-readme) | GitHub [1.2.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Peering_1.2.2/sdk/peering/Azure.ResourceManager.Peering/) | @@ -372,7 +372,7 @@ | Resource Management - Standby Pool | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.StandbyPool/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.StandbyPool-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StandbyPool_1.1.0/sdk/standbypool/Azure.ResourceManager.StandbyPool/) | | Resource Management - Storage | NuGet [1.5.0](https://www.nuget.org/packages/Azure.ResourceManager.Storage/1.5.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Storage-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Storage_1.5.0/sdk/storage/Azure.ResourceManager.Storage/) | | Resource Management - Storage Actions | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.StorageActions/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageActions-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageActions_1.0.0/sdk/storageactions/Azure.ResourceManager.StorageActions/) | -| Resource Management - Storage Cache | NuGet [1.3.2](https://www.nuget.org/packages/Azure.ResourceManager.StorageCache/1.3.2) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageCache-readme) | GitHub [1.3.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageCache_1.3.2/sdk/storagecache/Azure.ResourceManager.StorageCache/) | +| Resource Management - Storage Cache | NuGet [1.4.0](https://www.nuget.org/packages/Azure.ResourceManager.StorageCache/1.4.0) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageCache-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageCache_1.4.0/sdk/storagecache/Azure.ResourceManager.StorageCache/) | | Resource Management - Storage Mover | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.StorageMover/1.2.1) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageMover-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageMover_1.2.1/sdk/storagemover/Azure.ResourceManager.StorageMover/) | | Resource Management - Storage Pool | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.StoragePool/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.StoragePool-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StoragePool_1.1.1/sdk/storagepool/Azure.ResourceManager.StoragePool/) | | Resource Management - Storage Sync | NuGet [1.3.0](https://www.nuget.org/packages/Azure.ResourceManager.StorageSync/1.3.0) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageSync-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageSync_1.3.0/sdk/storagesync/Azure.ResourceManager.StorageSync/) | @@ -539,7 +539,7 @@ | Functions extension for Durable Task Framework - isolated worker | NuGet [1.8.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.DurableTask/1.8.0) | | | | Functions extension for HTTP | NuGet [3.2.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Http/3.2.0) | | GitHub [3.2.0](https://github.com/Azure/azure-webjobs-sdk-extensions/tree/v3.0.2/src/WebJobs.Extensions.Http) | | Functions extension for IoT Edge | NuGet [1.0.7](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.EdgeHub/1.0.7) | | GitHub [1.0.7](https://github.com/Azure/iotedge/tree/1.0.7/edge-hub) | -| Functions extension for Kafka | NuGet [4.1.4](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Kafka/4.1.4) | | GitHub [4.1.4](https://github.com/Azure/azure-functions-kafka-extension/tree/3.0.0/src/Microsoft.Azure.WebJobs.Extensions.Kafka) | +| Functions extension for Kafka | NuGet [4.2.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Kafka/4.2.0) | | GitHub [4.2.0](https://github.com/Azure/azure-functions-kafka-extension/tree/3.0.0/src/Microsoft.Azure.WebJobs.Extensions.Kafka) | | Functions extension for Notification Hubs | NuGet [1.3.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.NotificationHubs/1.3.0) | | GitHub [1.3.0](https://github.com/Azure/azure-webjobs-sdk-extensions) | | Functions extension for RabbitMQ | NuGet [2.1.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.RabbitMQ/2.1.0) | | GitHub [2.1.0](https://github.com/Azure/azure-functions-rabbitmq-extension/tree/v0.2.2029-beta) | | Functions extension for script abstractions | NuGet [1.0.4-preview](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Script.Abstractions/1.0.4-preview) | | | diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md index 784b0439b7e03..d2ae2c77ee3aa 100644 --- a/docs/azure/includes/dotnet-new.md +++ b/docs/azure/includes/dotnet-new.md @@ -332,7 +332,7 @@ | Resource Management - Nginx | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.Nginx/1.0.0)
NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.Nginx/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.Nginx-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Nginx_1.0.0/sdk/nginx/Azure.ResourceManager.Nginx/)
GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Nginx_1.1.0-beta.3/sdk/nginx/Azure.ResourceManager.Nginx/) | | Resource Management - Notification Hubs | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.NotificationHubs/1.1.1)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.NotificationHubs/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.NotificationHubs-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NotificationHubs_1.1.1/sdk/notificationhubs/Azure.ResourceManager.NotificationHubs/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.NotificationHubs_1.2.0-beta.2/sdk/notificationhubs/Azure.ResourceManager.NotificationHubs/) | | Resource Management - Onlineexperimentation | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.OnlineExperimentation/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.OnlineExperimentation-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.OnlineExperimentation_1.0.0-beta.1/sdk/onlineexperimentation/Azure.ResourceManager.OnlineExperimentation/) | -| Resource Management - Oracle Database | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.OracleDatabase/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.OracleDatabase-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.OracleDatabase_1.1.0/sdk/oracle/Azure.ResourceManager.OracleDatabase/) | +| Resource Management - Oracle Database | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.OracleDatabase/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.OracleDatabase-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.OracleDatabase_1.2.0/sdk/oracle/Azure.ResourceManager.OracleDatabase/) | | Resource Management - Orbital | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.Orbital/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Orbital-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Orbital_1.1.1/sdk/orbital/Azure.ResourceManager.Orbital/) | | Resource Management - Palo Alto Networks - Next Generation Firewall | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.PaloAltoNetworks.Ngfw/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.PaloAltoNetworks.Ngfw-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.PaloAltoNetworks.Ngfw_1.1.1/sdk/paloaltonetworks.ngfw/Azure.ResourceManager.PaloAltoNetworks.Ngfw/) | | Resource Management - Peering | NuGet [1.2.2](https://www.nuget.org/packages/Azure.ResourceManager.Peering/1.2.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Peering-readme) | GitHub [1.2.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Peering_1.2.2/sdk/peering/Azure.ResourceManager.Peering/) | @@ -386,7 +386,7 @@ | Resource Management - Standby Pool | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.StandbyPool/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.StandbyPool-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StandbyPool_1.1.0/sdk/standbypool/Azure.ResourceManager.StandbyPool/) | | Resource Management - Storage | NuGet [1.5.0](https://www.nuget.org/packages/Azure.ResourceManager.Storage/1.5.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Storage-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Storage_1.5.0/sdk/storage/Azure.ResourceManager.Storage/) | | Resource Management - Storage Actions | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.StorageActions/1.0.0) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageActions-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageActions_1.0.0/sdk/storageactions/Azure.ResourceManager.StorageActions/) | -| Resource Management - Storage Cache | NuGet [1.3.2](https://www.nuget.org/packages/Azure.ResourceManager.StorageCache/1.3.2) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageCache-readme) | GitHub [1.3.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageCache_1.3.2/sdk/storagecache/Azure.ResourceManager.StorageCache/) | +| Resource Management - Storage Cache | NuGet [1.4.0](https://www.nuget.org/packages/Azure.ResourceManager.StorageCache/1.4.0) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageCache-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageCache_1.4.0/sdk/storagecache/Azure.ResourceManager.StorageCache/) | | Resource Management - Storage Mover | NuGet [1.2.1](https://www.nuget.org/packages/Azure.ResourceManager.StorageMover/1.2.1) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageMover-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageMover_1.2.1/sdk/storagemover/Azure.ResourceManager.StorageMover/) | | Resource Management - Storage Pool | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.StoragePool/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.StoragePool-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StoragePool_1.1.1/sdk/storagepool/Azure.ResourceManager.StoragePool/) | | Resource Management - Storage Sync | NuGet [1.3.0](https://www.nuget.org/packages/Azure.ResourceManager.StorageSync/1.3.0) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageSync-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageSync_1.3.0/sdk/storagesync/Azure.ResourceManager.StorageSync/) | From 3b4ddd808e90e082746b55229f90c11420cdf22e Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Tue, 30 Sep 2025 11:40:55 -0700 Subject: [PATCH 04/13] Add breaking change documentation for System.IO.Packaging case-insensitive URI comparison in .NET 8 (#48777) --- docs/core/compatibility/8.0.md | 1 + ...ystem-io-packaging-case-insensitive-uri.md | 54 +++++++++++++++++++ docs/core/compatibility/toc.yml | 2 + 3 files changed, 57 insertions(+) create mode 100644 docs/core/compatibility/core-libraries/8.0/system-io-packaging-case-insensitive-uri.md diff --git a/docs/core/compatibility/8.0.md b/docs/core/compatibility/8.0.md index 6c56c864ba3aa..b566f1e8ba1aa 100644 --- a/docs/core/compatibility/8.0.md +++ b/docs/core/compatibility/8.0.md @@ -57,6 +57,7 @@ If you're migrating an app to .NET 8, the breaking changes listed here might aff | [ITypeDescriptorContext nullable annotations](core-libraries/8.0/itypedescriptorcontext-props.md) | Source incompatible | | [Legacy Console.ReadKey removed](core-libraries/8.0/console-readkey-legacy.md) | Behavioral change | | [Method builders generate parameters with HasDefaultValue set to false](core-libraries/8.0/parameterinfo-hasdefaultvalue.md) | Behavioral change | +| [Package part URIs are now compared case-insensitively in System.IO.Packaging](core-libraries/8.0/system-io-packaging-case-insensitive-uri.md) | Behavioral change | | [ProcessStartInfo.WindowStyle honored when UseShellExecute is false](core-libraries/8.0/processstartinfo-windowstyle.md) | Behavioral change | | [RuntimeIdentifier returns platform for which runtime was built](core-libraries/8.0/runtimeidentifier.md) | Behavioral change | | [`Type.GetType` throws exception for all invalid element types](core-libraries/8.0/type-gettype.md) | Behavioral change | diff --git a/docs/core/compatibility/core-libraries/8.0/system-io-packaging-case-insensitive-uri.md b/docs/core/compatibility/core-libraries/8.0/system-io-packaging-case-insensitive-uri.md new file mode 100644 index 0000000000000..c9059b2ad9dd4 --- /dev/null +++ b/docs/core/compatibility/core-libraries/8.0/system-io-packaging-case-insensitive-uri.md @@ -0,0 +1,54 @@ +--- +title: "Breaking change: Package part URIs are now compared case-insensitively in System.IO.Packaging" +description: "Learn about the breaking change in .NET 8 where System.IO.Packaging now compares package part URIs case-insensitively to align with the OPC specification." +ms.date: 09/29/2024 +ai-usage: ai-generated +ms.custom: https://github.com/dotnet/runtime/issues/112783 +--- + +# Package part URIs are now compared case-insensitively in System.IO.Packaging + +Previously, part names and overrides that differed only by ASCII case (for example, `/part` vs `/PART`) were not considered equivalent in , even though the Open Packaging Conventions (OPC) specification requires case-insensitive equivalence (§7.2.3.5, ECMA-376). This change fixes the bug and brings .NET 5–9 in line with both .NET Framework and the OPC specification. + +## Version introduced + +.NET 8 + +## Previous behavior + +URI comparisons were case-sensitive. +Content type overrides failed if the casing differed between the part URI and the override entry. +Some non-compliant packages containing duplicate entries differing only in case (for example, `/part` and `/PART`) could be loaded, leading to ambiguous results. + +## New behavior + +URI comparisons are case-insensitive (). +Overrides with different casing now work as expected. +Non-compliant packages containing multiple entries that differ only by case are now rejected when opened. This aligns with .NET Framework and the OPC specification. + +## Type of breaking change + +This is a [behavioral change](../../categories.md#behavioral-change). + +## Reason for change + +This change aligns behavior with: + +- The OPC specification (case-insensitive URI equivalence is mandatory). +- Existing .NET Framework behavior, which already enforces case-insensitive matching. + +It prevents ambiguous lookups and ensures consistent results, and fixes [dotnet/runtime#112783](https://github.com/dotnet/runtime/issues/112783). + +## Recommended action + +Ensure that OPC packages do not contain part names differing only by case, as this is invalid per the OPC specification. + +If consuming packages that violate the specification: + +- Contact the package author to fix the package. +- If you need to read or inspect the contents, you can open the package as a ZIP archive. Unlike the Package API, ZIP archives do not enforce OPC rules and will allow you to access all entries, including those with conflicting case names. + +## Affected APIs + +- +- diff --git a/docs/core/compatibility/toc.yml b/docs/core/compatibility/toc.yml index 33939a4065721..789a51226de3e 100644 --- a/docs/core/compatibility/toc.yml +++ b/docs/core/compatibility/toc.yml @@ -398,6 +398,8 @@ items: href: core-libraries/8.0/console-readkey-legacy.md - name: Method builders generate parameters with HasDefaultValue=false href: core-libraries/8.0/parameterinfo-hasdefaultvalue.md + - name: Package part URIs are now compared case-insensitively in System.IO.Packaging + href: core-libraries/8.0/system-io-packaging-case-insensitive-uri.md - name: ProcessStartInfo.WindowStyle honored when UseShellExecute is false href: core-libraries/8.0/processstartinfo-windowstyle.md - name: RuntimeIdentifier returns platform for which runtime was built From f3edf6e89eac8456a0b30d7b436c25f8a777fcfc Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Tue, 30 Sep 2025 11:44:08 -0700 Subject: [PATCH 05/13] Add breaking change documentation for FromKeyedServicesAttribute.Key nullability (#48778) --- docs/core/compatibility/8.0.md | 1 + ...fromkeyedservicesattribute-key-nullable.md | 48 +++++++++++++++++++ docs/core/compatibility/toc.yml | 2 + 3 files changed, 51 insertions(+) create mode 100644 docs/core/compatibility/extensions/8.0/fromkeyedservicesattribute-key-nullable.md diff --git a/docs/core/compatibility/8.0.md b/docs/core/compatibility/8.0.md index b566f1e8ba1aa..3e2240e1613c9 100644 --- a/docs/core/compatibility/8.0.md +++ b/docs/core/compatibility/8.0.md @@ -91,6 +91,7 @@ If you're migrating an app to .NET 8, the breaking changes listed here might aff | [ConfigurationManager package no longer references System.Security.Permissions](extensions/8.0/configurationmanager-package.md) | Source incompatible | | [DirectoryServices package no longer references System.Security.Permissions](extensions/8.0/directoryservices-package.md) | Source incompatible | | [Empty keys added to dictionary by configuration binder](extensions/8.0/dictionary-configuration-binding.md) | Behavioral change | +| [FromKeyedServicesAttribute.Key can be null](extensions/8.0/fromkeyedservicesattribute-key-nullable.md) | Source incompatible | | [HostApplicationBuilderSettings.Args respected by HostApplicationBuilder ctor](extensions/8.0/hostapplicationbuilder-ctor.md) | Behavioral change | | [ManagementDateTimeConverter.ToDateTime returns a local time](extensions/8.0/dmtf-todatetime.md) | Behavioral change | | [System.Formats.Cbor DateTimeOffset formatting change](extensions/8.0/cbor-datetime.md) | Behavioral change | diff --git a/docs/core/compatibility/extensions/8.0/fromkeyedservicesattribute-key-nullable.md b/docs/core/compatibility/extensions/8.0/fromkeyedservicesattribute-key-nullable.md new file mode 100644 index 0000000000000..b408b9378898f --- /dev/null +++ b/docs/core/compatibility/extensions/8.0/fromkeyedservicesattribute-key-nullable.md @@ -0,0 +1,48 @@ +--- +title: "Breaking change: FromKeyedServicesAttribute.Key can be null" +description: "Learn about the breaking change in .NET 8 where FromKeyedServicesAttribute.Key is now nullable to support unkeyed services and inheritance." +ms.date: 09/29/2025 +ai-usage: ai-assisted +--- + +# FromKeyedServicesAttribute.Key can be null + + has been changed from a non-nullable `object` to a nullable `object?` to support null values for unkeyed services and inheritance scenarios. + +## Version introduced + +.NET 8 + +## Previous behavior + +Previously, was declared as a non-nullable `object`: + +```csharp +public object Key { get; } +``` + +## New behavior + +Starting in .NET 8, is now declared as a nullable `object?`: + +```csharp +public object? Key { get; } +``` + +A `null` value indicates there is no key and only the parameter type is used to resolve the service. This is useful for dependency injection implementations that require an explicit way to declare that the parameter should be resolved for unkeyed services. A `null` value is also used with inheritance scenarios to indicate that the key should be inherited from the parent scope. + +## Type of breaking change + +This change can affect [source compatibility](../../categories.md#source-compatibility). + +## Reason for change + +Support was added for keyed services to annotate parameters as unkeyed. This change allows developers to explicitly indicate when a parameter should be resolved without a key, which is particularly useful in scenarios where both keyed and unkeyed services are registered for the same type. + +## Recommended action + +Adjust any code that uses to handle `null` values. + +## Affected APIs + +- diff --git a/docs/core/compatibility/toc.yml b/docs/core/compatibility/toc.yml index 789a51226de3e..ee1255bb93923 100644 --- a/docs/core/compatibility/toc.yml +++ b/docs/core/compatibility/toc.yml @@ -436,6 +436,8 @@ items: href: extensions/8.0/directoryservices-package.md - name: Empty keys added to dictionary by configuration binder href: extensions/8.0/dictionary-configuration-binding.md + - name: FromKeyedServicesAttribute.Key can be null + href: extensions/8.0/fromkeyedservicesattribute-key-nullable.md - name: HostApplicationBuilderSettings.Args respected by constructor href: extensions/8.0/hostapplicationbuilder-ctor.md - name: ManagementDateTimeConverter.ToDateTime returns a local time From cdce86bf4b98e1b215f60f636a3e36bcb25571e8 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Tue, 30 Sep 2025 11:52:20 -0700 Subject: [PATCH 06/13] Change string marshalling to LPUTF8Str (#48795) --- docs/standard/native-interop/type-marshalling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard/native-interop/type-marshalling.md b/docs/standard/native-interop/type-marshalling.md index f05e60ffac31c..963ba826b44de 100644 --- a/docs/standard/native-interop/type-marshalling.md +++ b/docs/standard/native-interop/type-marshalling.md @@ -12,7 +12,7 @@ Marshalling is needed because the types in the managed and unmanaged code are di ```csharp [LibraryImport("somenativelibrary.dll")] -static extern int MethodA([MarshalAs(UnmanagedType.LPStr)] string parameter); +static extern int MethodA([MarshalAs(UnmanagedType.LPUTF8Str)] string parameter); // or From e8cd6a1fa4438f1328726e0c60eac76003c0e879 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Tue, 30 Sep 2025 12:28:26 -0700 Subject: [PATCH 07/13] Add breaking change documentation for new dotnet list package audit source warning (#48779) --- docs/core/compatibility/8.0.md | 1 + ...otnet-list-package-audit-source-warning.md | 42 +++++++++++++++++++ docs/core/compatibility/toc.yml | 2 + 3 files changed, 45 insertions(+) create mode 100644 docs/core/compatibility/sdk/8.0/dotnet-list-package-audit-source-warning.md diff --git a/docs/core/compatibility/8.0.md b/docs/core/compatibility/8.0.md index 3e2240e1613c9..de4cf14ba73c2 100644 --- a/docs/core/compatibility/8.0.md +++ b/docs/core/compatibility/8.0.md @@ -143,6 +143,7 @@ If you're migrating an app to .NET 8, the breaking changes listed here might aff | [Runtime-specific apps not self-contained](sdk/8.0/runtimespecific-app-default.md) | Source/binary incompatible | | [--arch option doesn't imply self-contained](sdk/8.0/arch-option.md) | Behavioral change | | ['dotnet restore' produces security vulnerability warnings](sdk/8.0/dotnet-restore-audit.md) | Behavioral change | +| ['dotnet list package' warns if source doesn't provide vulnerability data](sdk/8.0/dotnet-list-package-audit-source-warning.md) | Behavioral change | | [SDK uses a smaller RID graph](sdk/8.0/rid-graph.md) | Behavioral change/Source incompatible | | [Setting DebugSymbols to false disables PDB generation](sdk/8.0/debugsymbols.md) | Behavioral change | | [Source Link included in the .NET SDK](sdk/8.0/source-link.md) | Source incompatible | diff --git a/docs/core/compatibility/sdk/8.0/dotnet-list-package-audit-source-warning.md b/docs/core/compatibility/sdk/8.0/dotnet-list-package-audit-source-warning.md new file mode 100644 index 0000000000000..6bccfc72764ff --- /dev/null +++ b/docs/core/compatibility/sdk/8.0/dotnet-list-package-audit-source-warning.md @@ -0,0 +1,42 @@ +--- +title: "Breaking change: 'dotnet list package' warns if source doesn't provide vulnerability data" +description: "Learn about the breaking change in .NET 8 where 'dotnet list package --vulnerable' emits a warning when audit sources don't support VulnerabilityInfoResource." +ms.date: 09/29/2025 +ai-usage: ai-assisted +ms.custom: https://github.com/dotnet/docs/issues/42608 +--- +# 'dotnet list package' warns if source doesn't provide vulnerability data + +When using `dotnet list package --vulnerable`, if a configured `auditsources` doesn't support `VulnerabilityInfoResource`, a warning is now shown to inform the user that the source doesn't provide vulnerability data. + +## Version introduced + +.NET 8 + +## Previous behavior + +Previously, the command silently skipped `auditsource` sources that lacked vulnerability information. + +## New behavior + +Starting in .NET 8, the command emits a warning: + +> Audit source '{0}' did not provide any vulnerability data. + +This warning helps users understand why certain sources might not influence the reported vulnerabilities. + +## Type of breaking change + +This is a [behavioral change](../../categories.md#behavioral-change). + +## Reason for change + +This warning came as part of the work to allow customers to use `auditsources` when running the `dotnet list package` command. The warning helps users understand when configured audit sources don't provide the expected vulnerability information. + +## Recommended action + +Check the specified `auditsources` to ensure it supports `VulnerabilityInfoResource`. If it doesn't, either update the source or replace it with one that provides vulnerability data. + +## Affected APIs + +None. diff --git a/docs/core/compatibility/toc.yml b/docs/core/compatibility/toc.yml index ee1255bb93923..70bd1b8e6d1ac 100644 --- a/docs/core/compatibility/toc.yml +++ b/docs/core/compatibility/toc.yml @@ -488,6 +488,8 @@ items: href: sdk/8.0/dotnet-publish-config.md - name: "'dotnet restore' produces security vulnerability warnings" href: sdk/8.0/dotnet-restore-audit.md + - name: "'dotnet list package' warns if source doesn't provide vulnerability data" + href: sdk/8.0/dotnet-list-package-audit-source-warning.md - name: Duplicate output for -getItem, -getProperty, and -getTargetResult href: sdk/8.0/getx-duplicate-output.md - name: Implicit `using` for System.Net.Http no longer added From 08cb49d3e450024c00cc6e2e40e4f517b22fa8db Mon Sep 17 00:00:00 2001 From: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Date: Tue, 30 Sep 2025 12:52:01 -0700 Subject: [PATCH 08/13] Add HTTP logging middleware breaking change documentation for .NET 8 (#48786) --- docs/core/compatibility/8.0.md | 1 + .../httplogging-addhttplogging-requirement.md | 38 +++++++++++++++++++ docs/core/compatibility/toc.yml | 2 + 3 files changed, 41 insertions(+) create mode 100644 docs/core/compatibility/aspnet-core/8.0/httplogging-addhttplogging-requirement.md diff --git a/docs/core/compatibility/8.0.md b/docs/core/compatibility/8.0.md index de4cf14ba73c2..0d5d1b8f4231a 100644 --- a/docs/core/compatibility/8.0.md +++ b/docs/core/compatibility/8.0.md @@ -18,6 +18,7 @@ If you're migrating an app to .NET 8, the breaking changes listed here might aff | [ConcurrencyLimiterMiddleware is obsolete](aspnet-core/8.0/concurrencylimitermiddleware-obsolete.md) | Source incompatible | | [Custom converters for serialization removed](aspnet-core/8.0/problemdetails-custom-converters.md) | Behavioral change | | [Forwarded Headers Middleware ignores X-Forwarded-* headers from unknown proxies](aspnet-core/8.0/forwarded-headers-unknown-proxies.md) | Behavioral change | +| [HTTP logging middleware requires AddHttpLogging()](aspnet-core/8.0/httpLogging-addhttplogging-requirement.md) | Behavioral change | | [ISystemClock is obsolete](aspnet-core/8.0/isystemclock-obsolete.md) | Source incompatible | | [Minimal APIs: IFormFile parameters require anti-forgery checks](aspnet-core/8.0/antiforgery-checks.md) | Behavioral change | | [Rate-limiting middleware requires AddRateLimiter](aspnet-core/8.0/addratelimiter-requirement.md) | Behavioral change | diff --git a/docs/core/compatibility/aspnet-core/8.0/httplogging-addhttplogging-requirement.md b/docs/core/compatibility/aspnet-core/8.0/httplogging-addhttplogging-requirement.md new file mode 100644 index 0000000000000..f268500161eb3 --- /dev/null +++ b/docs/core/compatibility/aspnet-core/8.0/httplogging-addhttplogging-requirement.md @@ -0,0 +1,38 @@ +--- +title: "Breaking change: HTTP logging middleware requires AddHttpLogging()" +description: Learn about the breaking change in ASP.NET Core 8.0 where HTTP logging middleware now requires AddHttpLogging() to be called. +ms.date: 09/29/2025 +--- +# HTTP logging middleware requires AddHttpLogging() + +ASP.NET Core HTTP logging middleware has been updated with extra functionality. The middleware now requires services registered with . + +## Version introduced + +ASP.NET Core 8.0 + +## Previous behavior + +Previously, you could call just `app.UseHttpLogging();` to activate HTTP logging. + +## New behavior + +Starting in .NET 8, if you don't also call , an error is raised: + +> System.InvalidOperationException: Unable to resolve service for type 'Microsoft.Extensions.ObjectPool.ObjectPool`1[Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext]' while attempting to activate 'Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware'. + +## Type of breaking change + +This change is a [behavioral change](../../categories.md#behavioral-change). + +## Reason for change + +Additional features were added to the HttpLogging middleware that are registered (and configurable) via the method. + +## Recommended action + +Call `services.AddHttpLogging()` during host construction. + +## Affected APIs + +None. diff --git a/docs/core/compatibility/toc.yml b/docs/core/compatibility/toc.yml index 70bd1b8e6d1ac..99ca5cd706833 100644 --- a/docs/core/compatibility/toc.yml +++ b/docs/core/compatibility/toc.yml @@ -336,6 +336,8 @@ items: href: aspnet-core/8.0/problemdetails-custom-converters.md - name: Forwarded Headers Middleware ignores X-Forwarded-* headers from unknown proxies href: aspnet-core/8.0/forwarded-headers-unknown-proxies.md + - name: HTTP logging middleware requires AddHttpLogging() + href: aspnet-core/8.0/httpLogging-addhttplogging-requirement.md - name: ISystemClock is obsolete href: aspnet-core/8.0/isystemclock-obsolete.md - name: "Minimal APIs: IFormFile parameters require anti-forgery checks" From 902fa19c0570dd63b115b51c51a5a66d43aa4ace Mon Sep 17 00:00:00 2001 From: Taylor Southwick Date: Tue, 30 Sep 2025 13:09:10 -0700 Subject: [PATCH 09/13] Highlight that GHCP migration support for framework apps is in preview (#48685) * Highlight that GHCP migration support for framework apps is in preview * Fix broken link * change warning to note * Update docs/core/porting/github-copilot-app-modernization-overview.md * Revise .NET upgrade notes and emphasize ASP.NET migration Updated notes on .NET Framework upgrade scenarios and added emphasis on ASP.NET project migration recommendations. --------- Co-authored-by: Andy (Steve) De George <67293991+adegeo@users.noreply.github.com> --- .../porting/github-copilot-app-modernization-overview.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/core/porting/github-copilot-app-modernization-overview.md b/docs/core/porting/github-copilot-app-modernization-overview.md index 5b0c55c67f2cd..a485a4cf16514 100644 --- a/docs/core/porting/github-copilot-app-modernization-overview.md +++ b/docs/core/porting/github-copilot-app-modernization-overview.md @@ -56,7 +56,7 @@ To start an upgrade or migration, interact with GitHub Copilot, following these The modernization agent supports upgrading projects coded in C#. The following types of projects are supported: -- ASP.NET and ASP.NET Core (including related technologies such as MVC, Razor Pages, and Web API) +- ASP.NET Core (and related technologies such as MVC, Razor Pages, and Web API) - Blazor - Azure Functions - Windows Presentation Foundation @@ -64,6 +64,9 @@ The modernization agent supports upgrading projects coded in C#. The following t - Class libraries - Console apps +> [!IMPORTANT] +> .NET Framework upgrade scenarios are currently in preview, which includes technologies such as Windows Forms for .NET Framework and ASP.NET. Using the modernization agent to design an upgrade plan might work in limited scenarios. If upgrading an ASP.NET project (or related technologies such as MVC, Razor Pages, Web API) see [ASP.NET Migration](/aspnet/core/migration/fx-to-core) for recommendations. + To learn how to start an upgrade, see [How to upgrade a .NET app with GitHub Copilot app modernization](how-to-upgrade-with-github-copilot.md). ### Upgrade paths @@ -71,10 +74,12 @@ To learn how to start an upgrade, see [How to upgrade a .NET app with GitHub Cop The following upgrade paths are supported: - Upgrade projects from older .NET versions to the latest. -- Upgrade projects from .NET Framework to the latest version of .NET. - Modernize your code base with new features. - Migrate components and services to Azure. +> [!IMPORTANT] +> Upgrading projects from .NET Framework to the latest version of .NET is still in preview. + ## Migrate .NET projects to Azure The modernization agent combines automated analysis, AI-driven code remediation, build and vulnerability checks, and deployment automation to simplify migrations to Azure. The following capabilities describe how the agent assesses readiness, applies fixes, and streamlines the migration process: From f9832a5019616e2d308455da265f4418bba71f2b Mon Sep 17 00:00:00 2001 From: Noah Falk Date: Tue, 30 Sep 2025 13:46:46 -0700 Subject: [PATCH 10/13] Update debugging and profiling documentation (#48796) * Update debugging and profiling documentation Clarify performance impact of enabling perf maps or jit dumps. * Update docs/core/runtime-config/debugging-profiling.md Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com> --------- Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com> --- docs/core/runtime-config/debugging-profiling.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/core/runtime-config/debugging-profiling.md b/docs/core/runtime-config/debugging-profiling.md index 69224074a8b9c..13cdea3ccba28 100644 --- a/docs/core/runtime-config/debugging-profiling.md +++ b/docs/core/runtime-config/debugging-profiling.md @@ -52,11 +52,11 @@ This article details the settings you can use to configure .NET debugging and pr ## Export perf maps and jit dumps -- Enables or disables selective enablement of perf maps or jit dumps. These files allow third party tools, such as the Linux `perf` tool, to identify call sites for dynamically generated code and precompiled ReadyToRun (R2R) modules. +- Enables or disables perf maps or jit dumps. These files allow third party tools, such as the Linux `perf` tool, to provide human readable names for dynamically generated code and precompiled ReadyToRun (R2R) modules. - If you omit this setting, writing perf map and jit dump files are both disabled. This is equivalent to setting the value to `0`. - When perf maps are disabled, not all managed callsites will be properly resolved. - Depending on the Linux kernel version, both formats are supported by the `perf` tool. -- Enabling perf maps or jit dumps causes a 10-20% overhead. To minimize performance impact, it's recommended to selectively enable either perf maps or jit dumps, but not both. +- Enabling perf maps or jit dumps might cause up to a 20% overhead, though often it's much less. To minimize performance impact, it's recommended to selectively enable either perf maps or jit dumps, but not both. The impact only occurs while the application is JITing code. Often that occurs at startup, but it might occur later if the application is running a new code path for the first time. The following table compares perf maps and jit maps. From f3d00f5f1c0e64373afb1071441a488832a4c60f Mon Sep 17 00:00:00 2001 From: rakichkin <95534778+rakichkin@users.noreply.github.com> Date: Tue, 30 Sep 2025 23:54:22 +0300 Subject: [PATCH 11/13] Fix string interpolation typo in AsyncCultureEx1 code snippet (#48798) --- .../System.Globalization/CultureInfo/csharp/asyncculture1.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/fundamentals/runtime-libraries/snippets/System.Globalization/CultureInfo/csharp/asyncculture1.cs b/docs/fundamentals/runtime-libraries/snippets/System.Globalization/CultureInfo/csharp/asyncculture1.cs index bda34aac05faa..f92562bd469ad 100644 --- a/docs/fundamentals/runtime-libraries/snippets/System.Globalization/CultureInfo/csharp/asyncculture1.cs +++ b/docs/fundamentals/runtime-libraries/snippets/System.Globalization/CultureInfo/csharp/asyncculture1.cs @@ -14,7 +14,7 @@ public static void Main() string FormatDelegate() { string output = $"Formatting using the {CultureInfo.CurrentCulture.Name} " + - "culture on thread {Thread.CurrentThread.ManagedThreadId}.\n"; + $"culture on thread {Thread.CurrentThread.ManagedThreadId}.\n"; foreach (decimal value in values) output += $"{value.ToString(formatString)} "; From 339892feb1fedca248c31deafe38a4f3b8cef5ee Mon Sep 17 00:00:00 2001 From: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Date: Tue, 30 Sep 2025 16:31:27 -0700 Subject: [PATCH 12/13] fix casing in links (#48802) --- docs/core/compatibility/8.0.md | 2 +- docs/core/compatibility/toc.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/core/compatibility/8.0.md b/docs/core/compatibility/8.0.md index 0d5d1b8f4231a..842cbb7f29406 100644 --- a/docs/core/compatibility/8.0.md +++ b/docs/core/compatibility/8.0.md @@ -18,7 +18,7 @@ If you're migrating an app to .NET 8, the breaking changes listed here might aff | [ConcurrencyLimiterMiddleware is obsolete](aspnet-core/8.0/concurrencylimitermiddleware-obsolete.md) | Source incompatible | | [Custom converters for serialization removed](aspnet-core/8.0/problemdetails-custom-converters.md) | Behavioral change | | [Forwarded Headers Middleware ignores X-Forwarded-* headers from unknown proxies](aspnet-core/8.0/forwarded-headers-unknown-proxies.md) | Behavioral change | -| [HTTP logging middleware requires AddHttpLogging()](aspnet-core/8.0/httpLogging-addhttplogging-requirement.md) | Behavioral change | +| [HTTP logging middleware requires AddHttpLogging()](aspnet-core/8.0/httplogging-addhttplogging-requirement.md) | Behavioral change | | [ISystemClock is obsolete](aspnet-core/8.0/isystemclock-obsolete.md) | Source incompatible | | [Minimal APIs: IFormFile parameters require anti-forgery checks](aspnet-core/8.0/antiforgery-checks.md) | Behavioral change | | [Rate-limiting middleware requires AddRateLimiter](aspnet-core/8.0/addratelimiter-requirement.md) | Behavioral change | diff --git a/docs/core/compatibility/toc.yml b/docs/core/compatibility/toc.yml index 99ca5cd706833..18c08be85a233 100644 --- a/docs/core/compatibility/toc.yml +++ b/docs/core/compatibility/toc.yml @@ -337,7 +337,7 @@ items: - name: Forwarded Headers Middleware ignores X-Forwarded-* headers from unknown proxies href: aspnet-core/8.0/forwarded-headers-unknown-proxies.md - name: HTTP logging middleware requires AddHttpLogging() - href: aspnet-core/8.0/httpLogging-addhttplogging-requirement.md + href: aspnet-core/8.0/httplogging-addhttplogging-requirement.md - name: ISystemClock is obsolete href: aspnet-core/8.0/isystemclock-obsolete.md - name: "Minimal APIs: IFormFile parameters require anti-forgery checks" From 2804bc38872662c56d18c461abfad581a52a69ac Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Tue, 30 Sep 2025 16:49:03 -0700 Subject: [PATCH 13/13] Update package index with latest published versions (#48799) --- docs/azure/includes/dotnet-all.md | 18 +++++++++--------- docs/azure/includes/dotnet-new.md | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md index c9d978045cf61..53fa09bdb06a1 100644 --- a/docs/azure/includes/dotnet-all.md +++ b/docs/azure/includes/dotnet-all.md @@ -116,7 +116,7 @@ | Text Translation | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.Translation.Text/1.0.0) | [docs](/dotnet/api/overview/azure/AI.Translation.Text-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Translation.Text_1.0.0/sdk/translation/Azure.AI.Translation.Text/) | | Time Series Insights | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.IoT.TimeSeriesInsights/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/IoT.TimeSeriesInsights-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.IoT.TimeSeriesInsights_1.0.0-beta.1/sdk/timeseriesinsights/Azure.IoT.TimeSeriesInsights/) | | TimeZone | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Maps.TimeZones/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Maps.TimeZones-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Maps.TimeZones_1.0.0-beta.1/sdk/maps/Azure.Maps.TimeZones/) | -| unknown | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.AI.VoiceLive/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/AI.VoiceLive-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.VoiceLive_1.0.0-beta.3/sdk/ai/Azure.AI.VoiceLive/) | +| unknown | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.VoiceLive/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.VoiceLive-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.VoiceLive_1.0.0-beta.4/sdk/ai/Azure.AI.VoiceLive/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.OnlineExperimentation/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.OnlineExperimentation-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.OnlineExperimentation_1.0.0-beta.1/sdk/onlineexperimentation/Azure.Analytics.OnlineExperimentation/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Projects/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Projects-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Projects_1.0.0-beta.1/sdk/cloudmachine/Azure.Projects/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Projects.AI/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Projects.AI-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Projects.AI_1.0.0-beta.1/sdk/cloudmachine/Azure.Projects.AI/) | @@ -419,13 +419,13 @@ | Speech Extension Telemetry | NuGet [1.46.0](https://www.nuget.org/packages/Microsoft.CognitiveServices.Speech.Extension.Telemetry/1.46.0) | | | | System Net Client Model | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/System.Net.ClientModel/1.0.0-beta.1) | | | | Unknown Display Name | NuGet [0.13.0-preview](https://www.nuget.org/packages/Azure.Iot.Operations.Connector/0.13.0-preview) | | | -| Unknown Display Name | NuGet [0.8.2](https://www.nuget.org/packages/Azure.Mcp/0.8.2) | | | -| Unknown Display Name | NuGet [0.8.2](https://www.nuget.org/packages/Azure.Mcp.linux-arm64/0.8.2) | | | -| Unknown Display Name | NuGet [0.8.2](https://www.nuget.org/packages/Azure.Mcp.linux-x64/0.8.2) | | | -| Unknown Display Name | NuGet [0.8.2](https://www.nuget.org/packages/Azure.Mcp.osx-arm64/0.8.2) | | | -| Unknown Display Name | NuGet [0.8.2](https://www.nuget.org/packages/Azure.Mcp.osx-x64/0.8.2) | | | -| Unknown Display Name | NuGet [0.8.2](https://www.nuget.org/packages/Azure.Mcp.win-arm64/0.8.2) | | | -| Unknown Display Name | NuGet [0.8.2](https://www.nuget.org/packages/Azure.Mcp.win-x64/0.8.2) | | | +| Unknown Display Name | NuGet [0.8.3](https://www.nuget.org/packages/Azure.Mcp/0.8.3) | | | +| Unknown Display Name | NuGet [0.8.3](https://www.nuget.org/packages/Azure.Mcp.linux-arm64/0.8.3) | | | +| Unknown Display Name | NuGet [0.8.3](https://www.nuget.org/packages/Azure.Mcp.linux-x64/0.8.3) | | | +| Unknown Display Name | NuGet [0.8.3](https://www.nuget.org/packages/Azure.Mcp.osx-arm64/0.8.3) | | | +| Unknown Display Name | NuGet [0.8.3](https://www.nuget.org/packages/Azure.Mcp.osx-x64/0.8.3) | | | +| Unknown Display Name | NuGet [0.8.3](https://www.nuget.org/packages/Azure.Mcp.win-arm64/0.8.3) | | | +| Unknown Display Name | NuGet [0.8.3](https://www.nuget.org/packages/Azure.Mcp.win-x64/0.8.3) | | | | Unknown Display Name | NuGet [0.1.2-preview.2](https://www.nuget.org/packages/Microsoft.Azure.Cosmos.Aot/0.1.2-preview.2) | | | | Unknown Display Name | NuGet [0.2.802](https://www.nuget.org/packages/Microsoft.Azure.Mcp.AzTypes.Internal.Compact/0.2.802) | | | | Unknown Display Name | NuGet [1.1.2-preview](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.AzureCosmosDb.Mongo/1.1.2-preview) | | | @@ -575,7 +575,7 @@ | Microsoft.Azure.Functions.Worker.Extensions.EventGrid | NuGet [3.6.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.EventGrid/3.6.0) | | | | Microsoft.Azure.Functions.Worker.Extensions.EventHubs | NuGet [6.5.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.EventHubs/6.5.0) | | | | Microsoft.Azure.Functions.Worker.Extensions.Http | NuGet [3.3.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Http/3.3.0) | | | -| Microsoft.Azure.Functions.Worker.Extensions.Kafka | NuGet [4.1.2](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Kafka/4.1.2) | | | +| Microsoft.Azure.Functions.Worker.Extensions.Kafka | NuGet [4.1.3](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Kafka/4.1.3) | | | | Microsoft.Azure.Functions.Worker.Extensions.Kusto | NuGet [1.0.13-Preview](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Kusto/1.0.13-Preview) | | | | Microsoft.Azure.Functions.Worker.Extensions.OpenApi | NuGet [1.4.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.OpenApi/1.4.0)
NuGet [2.0.0-preview2](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.OpenApi/2.0.0-preview2) | | | | Microsoft.Azure.Functions.Worker.Extensions.RabbitMQ | NuGet [2.1.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.RabbitMQ/2.1.0) | | | diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md index d2ae2c77ee3aa..d13b9998f998b 100644 --- a/docs/azure/includes/dotnet-new.md +++ b/docs/azure/includes/dotnet-new.md @@ -123,7 +123,7 @@ | Text Translation | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.Translation.Text/1.0.0) | [docs](/dotnet/api/overview/azure/AI.Translation.Text-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Translation.Text_1.0.0/sdk/translation/Azure.AI.Translation.Text/) | | Time Series Insights | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.IoT.TimeSeriesInsights/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/IoT.TimeSeriesInsights-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.IoT.TimeSeriesInsights_1.0.0-beta.1/sdk/timeseriesinsights/Azure.IoT.TimeSeriesInsights/) | | TimeZone | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Maps.TimeZones/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Maps.TimeZones-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Maps.TimeZones_1.0.0-beta.1/sdk/maps/Azure.Maps.TimeZones/) | -| unknown | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.AI.VoiceLive/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/AI.VoiceLive-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.VoiceLive_1.0.0-beta.3/sdk/ai/Azure.AI.VoiceLive/) | +| unknown | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.VoiceLive/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.VoiceLive-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.VoiceLive_1.0.0-beta.4/sdk/ai/Azure.AI.VoiceLive/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.OnlineExperimentation/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.OnlineExperimentation-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.OnlineExperimentation_1.0.0-beta.1/sdk/onlineexperimentation/Azure.Analytics.OnlineExperimentation/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Projects/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Projects-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Projects_1.0.0-beta.1/sdk/cloudmachine/Azure.Projects/) | | unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Projects.AI/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Projects.AI-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Projects.AI_1.0.0-beta.1/sdk/cloudmachine/Azure.Projects.AI/) |