diff --git a/.whatsnew.json b/.whatsnew.json index cc4da2fba2179..53b8e40f2b5b9 100644 --- a/.whatsnew.json +++ b/.whatsnew.json @@ -22,6 +22,14 @@ "names": [ "core/compatibility" ], "heading": ".NET breaking changes" }, + { + "names": [ "ai" ], + "heading": "AI in .NET" + }, + { + "names": [ "machine-learning" ], + "heading": "ML.NET" + }, { "names": [ "core", "fundamentals", "standard" ], "heading": ".NET fundamentals" @@ -75,10 +83,6 @@ ], "heading": "Advanced .NET programming" }, - { - "names": [ "ai" ], - "heading": "AI in .NET" - }, { "names": [ "azure" ], "heading": "Azure SDK for .NET" @@ -95,10 +99,6 @@ "names": [ "iot" ], "heading": ".NET IoT libraries" }, - { - "names": [ "machine-learning" ], - "heading": "ML.NET" - }, { "names": [ "orleans", "dotnet-orleans" ], "heading": "Microsoft Orleans" diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md index 2fdc8c2519c9e..a4f5d12e3c096 100644 --- a/docs/azure/includes/dotnet-all.md +++ b/docs/azure/includes/dotnet-all.md @@ -26,7 +26,7 @@ | Confidential Ledger | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Security.ConfidentialLedger/1.3.0)
NuGet [1.4.1-beta.1](https://www.nuget.org/packages/Azure.Security.ConfidentialLedger/1.4.1-beta.1) | [docs](/dotnet/api/overview/azure/Security.ConfidentialLedger-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.ConfidentialLedger_1.3.0/sdk/confidentialledger/Azure.Security.ConfidentialLedger/)
GitHub [1.4.1-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.ConfidentialLedger_1.4.1-beta.1/sdk/confidentialledger/Azure.Security.ConfidentialLedger/) | | Container Registry | NuGet [1.1.1](https://www.nuget.org/packages/Azure.Containers.ContainerRegistry/1.1.1)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.Containers.ContainerRegistry/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/Containers.ContainerRegistry-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Containers.ContainerRegistry_1.1.1/sdk/containerregistry/Azure.Containers.ContainerRegistry/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Containers.ContainerRegistry_1.2.0-beta.1/sdk/containerregistry/Azure.Containers.ContainerRegistry/) | | Content Safety | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.ContentSafety/1.0.0) | [docs](/dotnet/api/overview/azure/AI.ContentSafety-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.ContentSafety_1.0.0/sdk/contentsafety/Azure.AI.ContentSafety/) | -| Conversational Language Understanding | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Language.Conversations/1.1.0)
NuGet [2.0.0-beta.1](https://www.nuget.org/packages/Azure.AI.Language.Conversations/2.0.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_1.1.0/sdk/cognitivelanguage/Azure.AI.Language.Conversations/)
GitHub [2.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_2.0.0-beta.1/sdk/cognitivelanguage/Azure.AI.Language.Conversations/) | +| Conversational Language Understanding | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Language.Conversations/1.1.0)
NuGet [2.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Language.Conversations/2.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_1.1.0/sdk/cognitivelanguage/Azure.AI.Language.Conversations/)
GitHub [2.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_2.0.0-beta.2/sdk/cognitivelanguage/Azure.AI.Language.Conversations/) | | Core - Client - AMQP | NuGet [1.3.1](https://www.nuget.org/packages/Azure.Core.Amqp/1.3.1) | [docs](/dotnet/api/overview/azure/Core.Amqp-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core.Amqp_1.3.1/sdk/core/Azure.Core.Amqp/) | | Core - Client - Core | NuGet [1.44.1](https://www.nuget.org/packages/Azure.Core/1.44.1) | [docs](/dotnet/api/overview/azure/Core-readme) | GitHub [1.44.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core_1.44.1/sdk/core/Azure.Core/) | | Core Newtonsoft Json | NuGet [2.0.0](https://www.nuget.org/packages/Microsoft.Azure.Core.NewtonsoftJson/2.0.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.Core.NewtonsoftJson-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.Core.NewtonsoftJson_2.0.0/sdk/core/Microsoft.Azure.Core.NewtonsoftJson/) | @@ -113,6 +113,7 @@ | Text Analytics | NuGet [5.3.0](https://www.nuget.org/packages/Azure.AI.TextAnalytics/5.3.0) | [docs](/dotnet/api/overview/azure/AI.TextAnalytics-readme) | GitHub [5.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.TextAnalytics_5.3.0/sdk/textanalytics/Azure.AI.TextAnalytics/) | | 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) | | 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/) | | Vision Common | NuGet [0.15.1-beta.1](https://www.nuget.org/packages/Azure.AI.Vision.Common/0.15.1-beta.1) | | GitHub [0.15.1-beta.1](https://msasg.visualstudio.com/Skyman/_git/Carbon) | | WCF Storage Queues | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.WCF.Azure.StorageQueues/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Microsoft.WCF.Azure.StorageQueues-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.WCF.Azure.StorageQueues_1.0.0-beta.1/sdk/extension-wcf/Microsoft.WCF.Azure.StorageQueues/) | | Web PubSub | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Messaging.WebPubSub/1.4.0) | [docs](/dotnet/api/overview/azure/Messaging.WebPubSub-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.WebPubSub_1.4.0/sdk/webpubsub/Azure.Messaging.WebPubSub/) | @@ -369,10 +370,9 @@ | 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 [1.0.1-beta.4](https://www.nuget.org/packages/Azure.AI.ContentSafety.Extension.Embedded.Image/1.0.1-beta.4) | | | | Unknown Display Name | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.ContentSafety.Extension.Embedded.Text/1.0.0)
NuGet [1.0.1-beta.4](https://www.nuget.org/packages/Azure.AI.ContentSafety.Extension.Embedded.Text/1.0.1-beta.4) | | | -| Unknown Display Name | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Maps.TimeZones/1.0.0-beta.1) | | | | Unknown Display Name | NuGet [1.0.0-beta.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos.FaultInjection/1.0.0-beta.0) | | | -| Unknown Display Name | NuGet [1.0.14-preview](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.MySql/1.0.14-preview) | | | -| Unknown Display Name | NuGet [1.0.14-preview](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.MySql/1.0.14-preview) | | | +| Unknown Display Name | NuGet [1.0.31-preview](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.MySql/1.0.31-preview) | | | +| Unknown Display Name | NuGet [1.0.31-preview](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.MySql/1.0.31-preview) | | | | Unknown Display Name | NuGet [1.42.0](https://www.nuget.org/packages/Microsoft.CognitiveServices.Speech.CLI/1.42.0) | | | | Unknown Display Name | NuGet [1.42.0](https://www.nuget.org/packages/Microsoft.CognitiveServices.Speech.Extension.Embedded.SR/1.42.0) | | | | Unknown Display Name | NuGet [1.42.0](https://www.nuget.org/packages/Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS/1.42.0) | | | @@ -485,7 +485,7 @@ | Functions - Extensions | NuGet [1.1.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Extensions/1.1.0) | | GitHub [1.1.0](https://github.com/Azure/azure-functions-dotnet-extensions) | | Functions extension for Application Insights | NuGet [1.0.0-preview4](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.ApplicationInsights/1.0.0-preview4) | | | | Functions extension for Azure Mobile Apps | NuGet [3.0.0-beta8](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.MobileApps/3.0.0-beta8) | | GitHub [3.0.0-beta8](https://github.com/Azure/azure-webjobs-sdk-extensions/tree/v3.0.0-beta8/src/WebJobs.Extensions.MobileApps) | -| Functions extension for Azure SQL and SQL Server | NuGet [3.1.284](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Sql/3.1.284) | | | +| Functions extension for Azure SQL and SQL Server | NuGet [3.1.376](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Sql/3.1.376) | | | | Functions extension for Cosmos DB | NuGet [4.9.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.CosmosDB/4.9.0) | | GitHub [4.9.0](https://github.com/Azure/azure-webjobs-sdk-extensions/tree/cosmos-v3.0.7/src/WebJobs.Extensions.CosmosDB) | | Functions extension for DocumentDB | NuGet [1.3.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.DocumentDB/1.3.0) | | GitHub [1.3.0](https://github.com/Azure/azure-webjobs-sdk-extensions) | | Functions extension for Durable Task Framework | NuGet [3.0.2](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.DurableTask/3.0.2) | [docs](https://learn.microsoft.com/dotnet/api/overview/azure/functions) | GitHub [3.0.2](https://github.com/Azure/azure-functions-durable-extension/tree/v2.2.2/src/WebJobs.Extensions.DurableTask) | @@ -534,13 +534,13 @@ | 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.0.3](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.RabbitMQ/2.0.3) | | | | Microsoft.Azure.Functions.Worker.Extensions.Rpc | NuGet [1.0.1](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Rpc/1.0.1) | | | -| Microsoft.Azure.Functions.Worker.Extensions.SendGrid | NuGet [3.0.3](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.SendGrid/3.0.3) | | | +| Microsoft.Azure.Functions.Worker.Extensions.SendGrid | NuGet [3.1.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.SendGrid/3.1.0) | | | | Microsoft.Azure.Functions.Worker.Extensions.ServiceBus | NuGet [5.22.1](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.ServiceBus/5.22.1) | | | | Microsoft.Azure.Functions.Worker.Extensions.SignalRService | NuGet [1.14.1](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.SignalRService/1.14.1) | | | -| Microsoft.Azure.Functions.Worker.Extensions.Sql | NuGet [3.1.284](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Sql/3.1.284) | | | -| Microsoft.Azure.Functions.Worker.Extensions.Storage | NuGet [6.6.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Storage/6.6.0) | | | -| Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs | NuGet [6.6.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs/6.6.0) | | | -| Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues | NuGet [5.5.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues/5.5.0) | | | +| Microsoft.Azure.Functions.Worker.Extensions.Sql | NuGet [3.1.376](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Sql/3.1.376) | | | +| Microsoft.Azure.Functions.Worker.Extensions.Storage | NuGet [6.6.1](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Storage/6.6.1) | | | +| Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs | NuGet [6.6.1](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs/6.6.1) | | | +| Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues | NuGet [5.5.1](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues/5.5.1) | | | | Microsoft.Azure.Functions.Worker.Extensions.Storage.Tables | NuGet [1.0.0-preview1](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Storage.Tables/1.0.0-preview1) | | | | Microsoft.Azure.Functions.Worker.Extensions.Tables | NuGet [1.4.2](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Tables/1.4.2) | | | | Microsoft.Azure.Functions.Worker.Extensions.Timer | NuGet [4.3.1](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Timer/4.3.1) | | | diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md index a184f7e2a55f1..ce8cd55b46ff3 100644 --- a/docs/azure/includes/dotnet-new.md +++ b/docs/azure/includes/dotnet-new.md @@ -27,7 +27,7 @@ | Confidential Ledger | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Security.ConfidentialLedger/1.3.0)
NuGet [1.4.1-beta.1](https://www.nuget.org/packages/Azure.Security.ConfidentialLedger/1.4.1-beta.1) | [docs](/dotnet/api/overview/azure/Security.ConfidentialLedger-readme) | GitHub [1.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.ConfidentialLedger_1.3.0/sdk/confidentialledger/Azure.Security.ConfidentialLedger/)
GitHub [1.4.1-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Security.ConfidentialLedger_1.4.1-beta.1/sdk/confidentialledger/Azure.Security.ConfidentialLedger/) | | Container Registry | NuGet [1.1.1](https://www.nuget.org/packages/Azure.Containers.ContainerRegistry/1.1.1)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.Containers.ContainerRegistry/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/Containers.ContainerRegistry-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Containers.ContainerRegistry_1.1.1/sdk/containerregistry/Azure.Containers.ContainerRegistry/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Containers.ContainerRegistry_1.2.0-beta.1/sdk/containerregistry/Azure.Containers.ContainerRegistry/) | | Content Safety | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.ContentSafety/1.0.0) | [docs](/dotnet/api/overview/azure/AI.ContentSafety-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.ContentSafety_1.0.0/sdk/contentsafety/Azure.AI.ContentSafety/) | -| Conversational Language Understanding | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Language.Conversations/1.1.0)
NuGet [2.0.0-beta.1](https://www.nuget.org/packages/Azure.AI.Language.Conversations/2.0.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_1.1.0/sdk/cognitivelanguage/Azure.AI.Language.Conversations/)
GitHub [2.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_2.0.0-beta.1/sdk/cognitivelanguage/Azure.AI.Language.Conversations/) | +| Conversational Language Understanding | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Language.Conversations/1.1.0)
NuGet [2.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Language.Conversations/2.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_1.1.0/sdk/cognitivelanguage/Azure.AI.Language.Conversations/)
GitHub [2.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_2.0.0-beta.2/sdk/cognitivelanguage/Azure.AI.Language.Conversations/) | | Core - Client - AMQP | NuGet [1.3.1](https://www.nuget.org/packages/Azure.Core.Amqp/1.3.1) | [docs](/dotnet/api/overview/azure/Core.Amqp-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core.Amqp_1.3.1/sdk/core/Azure.Core.Amqp/) | | Core - Client - Core | NuGet [1.44.1](https://www.nuget.org/packages/Azure.Core/1.44.1) | [docs](/dotnet/api/overview/azure/Core-readme) | GitHub [1.44.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core_1.44.1/sdk/core/Azure.Core/) | | Core Newtonsoft Json | NuGet [2.0.0](https://www.nuget.org/packages/Microsoft.Azure.Core.NewtonsoftJson/2.0.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.Core.NewtonsoftJson-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.Core.NewtonsoftJson_2.0.0/sdk/core/Microsoft.Azure.Core.NewtonsoftJson/) | @@ -117,6 +117,7 @@ | Text Analytics | NuGet [5.3.0](https://www.nuget.org/packages/Azure.AI.TextAnalytics/5.3.0) | [docs](/dotnet/api/overview/azure/AI.TextAnalytics-readme) | GitHub [5.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.TextAnalytics_5.3.0/sdk/textanalytics/Azure.AI.TextAnalytics/) | | 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) | | 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/) | | Video Analyzer Edge | NuGet [1.0.0-beta.6](https://www.nuget.org/packages/Azure.Media.VideoAnalyzer.Edge/1.0.0-beta.6) | [docs](/dotnet/api/overview/azure/Media.VideoAnalyzer.Edge-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Media.VideoAnalyzer.Edge_1.0.0-beta.6/sdk/videoanalyzer/Azure.Media.VideoAnalyzer.Edge/) | | Vision Common | NuGet [0.15.1-beta.1](https://www.nuget.org/packages/Azure.AI.Vision.Common/0.15.1-beta.1) | | GitHub [0.15.1-beta.1](https://msasg.visualstudio.com/Skyman/_git/Carbon) | | WCF Storage Queues | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.WCF.Azure.StorageQueues/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Microsoft.WCF.Azure.StorageQueues-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.WCF.Azure.StorageQueues_1.0.0-beta.1/sdk/extension-wcf/Microsoft.WCF.Azure.StorageQueues/) | diff --git a/docs/core/diagnostics/media/aspire-dashboard-auth.png b/docs/core/diagnostics/media/aspire-dashboard-auth.png index 7cc16f047b169..3667f802f6194 100644 Binary files a/docs/core/diagnostics/media/aspire-dashboard-auth.png and b/docs/core/diagnostics/media/aspire-dashboard-auth.png differ diff --git a/docs/core/diagnostics/media/aspire-dashboard-logs.png b/docs/core/diagnostics/media/aspire-dashboard-logs.png index 52d6f2267c6f3..d32b5f3ded0af 100644 Binary files a/docs/core/diagnostics/media/aspire-dashboard-logs.png and b/docs/core/diagnostics/media/aspire-dashboard-logs.png differ diff --git a/docs/core/diagnostics/media/jaeger-nested-activity-details.png b/docs/core/diagnostics/media/jaeger-nested-activity-details.png index a27f149729aa0..dbfe7c5e2d0a0 100644 Binary files a/docs/core/diagnostics/media/jaeger-nested-activity-details.png and b/docs/core/diagnostics/media/jaeger-nested-activity-details.png differ diff --git a/docs/core/diagnostics/media/zipkin-nested-activities.jpg b/docs/core/diagnostics/media/zipkin-nested-activities.jpg index a51180242db44..e7f574f362d03 100644 Binary files a/docs/core/diagnostics/media/zipkin-nested-activities.jpg and b/docs/core/diagnostics/media/zipkin-nested-activities.jpg differ diff --git a/docs/core/extensions/artificial-intelligence.md b/docs/core/extensions/artificial-intelligence.md index 9943ab1c9775b..5032babc36b56 100644 --- a/docs/core/extensions/artificial-intelligence.md +++ b/docs/core/extensions/artificial-intelligence.md @@ -18,7 +18,7 @@ To install the [📦 Microsoft.Extensions.AI](https://www.nuget.org/packages/Mic ### [.NET CLI](#tab/dotnet-cli) ```dotnetcli -dotnet add package Microsoft.Extensions.AI --prelease +dotnet add package Microsoft.Extensions.AI --prerelease ``` ### [PackageReference](#tab/package-reference) diff --git a/docs/core/install/linux.md b/docs/core/install/linux.md index 7404974bb59e5..9da43790af8ea 100644 --- a/docs/core/install/linux.md +++ b/docs/core/install/linux.md @@ -49,4 +49,27 @@ You can install .NET manually in the following ways: - [Manual install](linux-scripted-manual.md#manual-install) - [Scripted install](linux-scripted-manual.md#scripted-install) -You may need to install [.NET dependencies](https://github.com/dotnet/core/blob/main/release-notes/8.0/linux-packages.md) if you install .NET manually. +You might need to install [.NET dependencies](https://github.com/dotnet/core/blob/main/release-notes/8.0/linux-packages.md) if you install .NET manually. + +## Additional sources + +.NET is also available from other sources. The packages and containers use a name similar to one of the following names: + +- aspnet-runtime +- dotnet-runtime +- dotnet-sdk +- dotnet + +### Package managers + +- +- +- +- +- +- + +### Containers + +- +- diff --git a/docs/core/install/windows.md b/docs/core/install/windows.md index 4cb70f77314d3..24918533f3f16 100644 --- a/docs/core/install/windows.md +++ b/docs/core/install/windows.md @@ -5,6 +5,7 @@ author: adegeo ms.author: adegeo ms.topic: install-set-up-deploy #Don't change ms.date: 11/11/2024 +no-loc: ["Program Files", "dotnet"] #customer intent: As a developer or user, I want to decide the best way to install .NET on Windows. --- @@ -395,7 +396,10 @@ Most likely you installed both the x86 (32-bit) and x64 (64-bit) versions of the C:\Program Files\dotnet\dotnet.exe ``` - If it's correct and the _Program Files\\_ is first, you don't have the problem this section is discussing and you should create a [.NET help request issue on GitHub](https://github.com/dotnet/core/issues/new?assignees=&labels=&template=01_bug_report.md&title=). + > [!TIP] + > Even though _Program Files_ is used in this example, you may see other copies of _dotnet.exe_ listed. Adjust them so that the appropriate _dotnet.exe_ is resolved first. + + If it's correct and _Program Files\\_ is first, you don't have the problem this section is discussing and you should create a [.NET help request issue on GitHub](https://github.com/dotnet/core/issues/new?template=Blank+issue). 01. Press the Windows button and type "Edit the system environment variables" into search. Select **Edit the system environment variables**. diff --git a/docs/core/testing/unit-testing-mstest-writing-tests-attributes.md b/docs/core/testing/unit-testing-mstest-writing-tests-attributes.md index 09dc93f3acfee..ff95a240e6225 100644 --- a/docs/core/testing/unit-testing-mstest-writing-tests-attributes.md +++ b/docs/core/testing/unit-testing-mstest-writing-tests-attributes.md @@ -353,6 +353,15 @@ The [DoNotParallelize]( [!NOTE] > By default, MSTest runs tests in sequential order so you only need to use this attribute if you have applied the `[Parallelize]` attribute at the assembly level. +### `RetryAttribute` + +The `RetryAttribute` was introduced in MSTest 3.8. This attribute causes the test method to be retried when it fails or timeouts. It allows you to specify the maximum number of retry attempts, the time delay between retries, and a delay backoff type, which is either constant or exponential. + +Only one `RetryAttribute` is expected to be present on a test method, and `RetryAttribute` cannot be used on methods that are not marked with `TestMethodAttribute`. + +> [!NOTE] +> `RetryAttribute` derives from an abstract `RetryBaseAttribute`. You can also create your own retry implementations if the built-in `RetryAttribute` doesn't suite your needs. + ## Utilities attributes ### `DeploymentItemAttribute` diff --git a/docs/core/testing/unit-testing-platform-extensions-code-coverage.md b/docs/core/testing/unit-testing-platform-extensions-code-coverage.md index afc2096569486..8e4712ed4d46c 100644 --- a/docs/core/testing/unit-testing-platform-extensions-code-coverage.md +++ b/docs/core/testing/unit-testing-platform-extensions-code-coverage.md @@ -30,12 +30,21 @@ Microsoft Code Coverage provides the following options: | Option | Description | |----------------------------|-------------------------------------------------------------------------------| | `--coverage` | Collect the code coverage using dotnet-coverage tool. | -| `--coverage-output` | Output file. | -| `--coverage-output-format` | Output file format. Supported values are: 'coverage', 'xml', and 'cobertura'. | -| `--coverage-settings` | XML code coverage settings. | +| `--coverage-output` | The name or path of the produced coverage file. By default, the file is `TestResults/.coverage`. | +| `--coverage-output-format` | Output file format. Supported values are: `coverage`, `xml`, and `cobertura`. Default is `coverage`. | +| `--coverage-settings` | [XML code coverage settings](../additional-tools/dotnet-coverage.md#settings). | For more information about the available options, see [settings](../additional-tools/dotnet-coverage.md#settings) and [samples](https://github.com/microsoft/codecoverage/tree/main/samples/Algorithms). ## Coverlet +> [!IMPORTANT] +> The `coverlet.collector` NuGet package is designed specifically for VSTest and cannot be used with `Microsoft.Testing.Platform`. + There's currently no Coverlet extension, but you can use [Coverlet .NET global tool](https://github.com/coverlet-coverage/coverlet#net-global-tool-guide-suffers-from-possible-known-issue). + +Assuming you've already installed the Coverlet global tool, you can now run: + +```bash +coverlet .\bin\Debug\net8.0\TestProject2.dll --target "dotnet" --targetargs "test .\bin\Debug\net8.0\TestProject2.dll --no-build" +``` diff --git a/docs/core/testing/unit-testing-platform-extensions-fakes.md b/docs/core/testing/unit-testing-platform-extensions-fakes.md index ac5a1ae7f582f..5951d1b734e11 100644 --- a/docs/core/testing/unit-testing-platform-extensions-fakes.md +++ b/docs/core/testing/unit-testing-platform-extensions-fakes.md @@ -23,7 +23,7 @@ To use the new extension with an existing project, update the existing `Microsof - - False - -+ ++ ``` If you are using MSTest.Sdk 3.7 or later, use the `EnableMicrosoftTestingExtensionsFakes` property to enable the extension and don't add the package reference. diff --git a/docs/core/testing/unit-testing-platform-vs-vstest.md b/docs/core/testing/unit-testing-platform-vs-vstest.md index 9d798358fd359..7706299be9577 100644 --- a/docs/core/testing/unit-testing-platform-vs-vstest.md +++ b/docs/core/testing/unit-testing-platform-vs-vstest.md @@ -99,7 +99,7 @@ The test related arguments are VSTest specific and so need to be transformed to | `-- ` | Not supported | > [!IMPORTANT] -> Before specifying any `Microsoft.Testing.Platform`, you need to add `--` to separate the `dotnet test` arguments from the new platform arguments. +> Before specifying any `Microsoft.Testing.Platform` arguments, you need to add `--` to separate the `dotnet test` arguments from the new platform arguments. For example, `dotnet test --no-build -- --list-tests`. ### `vstest.console.exe` diff --git a/docs/framework/wcf/samples/media/iiscertificate-wizard.GIF b/docs/framework/wcf/samples/media/iiscertificate-wizard.GIF index bfbe9a1907d28..62859997a0d2e 100644 Binary files a/docs/framework/wcf/samples/media/iiscertificate-wizard.GIF and b/docs/framework/wcf/samples/media/iiscertificate-wizard.GIF differ diff --git a/docs/standard/linq/perform-streaming-transform-large-xml-documents.md b/docs/standard/linq/perform-streaming-transform-large-xml-documents.md index 2934d392d4abe..7449e6eb40a11 100644 --- a/docs/standard/linq/perform-streaming-transform-large-xml-documents.md +++ b/docs/standard/linq/perform-streaming-transform-large-xml-documents.md @@ -76,54 +76,50 @@ The following is the source document, Source.xml: ```csharp static IEnumerable StreamCustomerItem(string uri) { - using (XmlReader reader = XmlReader.Create(uri)) - { - XElement name = null; - XElement item = null; + using XmlReader reader = XmlReader.Create(uri); + + reader.MoveToContent(); - reader.MoveToContent(); + // Parse the file, save header information when encountered, and yield the + // Item XElement objects as they're created. - // Parse the file, save header information when encountered, and yield the - // Item XElement objects as they're created. - // Loop through Customer elements. - while (reader.Read()) + // Loop through Customer elements + do + { + if (reader.NodeType == XmlNodeType.Element && reader.Name == "Customer") { - if (reader.NodeType == XmlNodeType.Element - && reader.Name == "Customer") + // Move to Name element + XElement? name = null; + do { - // move to Name element - while (reader.Read()) + if (reader.NodeType == XmlNodeType.Element && reader.Name == "Name") { - if (reader.NodeType == XmlNodeType.Element && - reader.Name == "Name") - { - name = XElement.ReadFrom(reader) as XElement; - break; - } + name = XNode.ReadFrom(reader) as XElement; + break; } + } + while (reader.Read()); - // loop through Item elements - while (reader.Read()) + // Loop through Item elements + while (reader.NodeType != XmlNodeType.EndElement) + { + if (reader.NodeType == XmlNodeType.Element && reader.Name == "Item") { - if (reader.NodeType == XmlNodeType.EndElement) - break; - if (reader.NodeType == XmlNodeType.Element - && reader.Name == "Item") + if (XNode.ReadFrom(reader) is XElement item && name != null) { - item = XElement.ReadFrom(reader) as XElement; - if (item != null) - { - XElement tempRoot = new XElement("Root", - new XElement(name) - ); - tempRoot.Add(item); - yield return item; - } + XElement tempRoot = new XElement("Root", + new XElement(name), + item + ); + yield return item; } } + else if (!reader.Read()) + break; } } } + while (reader.Read()); } static void Main(string[] args) @@ -141,128 +137,79 @@ static void Main(string[] args) ``` ```vb +Imports System.IO +Imports System.Xml + Module Module1 - Sub Main() - Dim root = New XStreamingElement("Root", - From el In New StreamCustomerItem("Source.xml") - Select - <%= el.Parent..Value %> - <%= el. %> - - ) - root.Save("Test.xml") - Console.WriteLine(My.Computer.FileSystem.ReadAllText("Test.xml")) - End Sub -End Module -Public Class StreamCustomerItem - Implements IEnumerable(Of XElement) + Public Iterator Function StreamCustomerItem(uri As String) As IEnumerable(Of XElement) + Using reader As XmlReader = XmlReader.Create(uri) + reader.MoveToContent() - Private _uri As String + ' Parse the file, save header information when encountered, And yield the + ' Item XElement objects as they're created. - Public Sub New(ByVal uri As String) - _uri = uri - End Sub + ' Loop through Customer elements + Do - Public Function GetEnumerator() As IEnumerator(Of XElement) Implements IEnumerable(Of XElement).GetEnumerator - Return New StreamCustomerItemEnumerator(_uri) - End Function + If reader.NodeType = XmlNodeType.Element And reader.Name = "Customer" Then - Public Function GetEnumerator1() As IEnumerator Implements IEnumerable.GetEnumerator - Return Me.GetEnumerator() - End Function -End Class + ' Move to Name element + Dim name As XElement = Nothing + Do + If reader.NodeType = XmlNodeType.Element And reader.Name = "Name" Then -Public Class StreamCustomerItemEnumerator - Implements IEnumerator(Of XElement) + name = TryCast(XNode.ReadFrom(reader), XElement) + Exit Do - Private _current As XElement - Private _customerName As String - Private _reader As Xml.XmlReader - Private _uri As String + End If - Public Sub New(ByVal uri As String) - _uri = uri - _reader = Xml.XmlReader.Create(_uri) - _reader.MoveToContent() - End Sub + Loop While reader.Read() + + ' Loop through Item elements + While reader.NodeType <> XmlNodeType.EndElement + + If reader.NodeType = XmlNodeType.Element And reader.Name = "Item" Then + + Dim item = TryCast(XNode.ReadFrom(reader), XElement) + + If name IsNot Nothing AndAlso item IsNot Nothing Then + + Dim tempRoot = + <%= name.Value %> + <%= item %> + + + Yield item - Public ReadOnly Property Current As XElement Implements IEnumerator(Of XElement).Current - Get - Return _current - End Get - End Property - - Public ReadOnly Property Current1 As Object Implements IEnumerator.Current - Get - Return Me.Current - End Get - End Property - - Public Function MoveNext() As Boolean Implements IEnumerator.MoveNext - Dim item As XElement - Dim name As XElement - - ' Parse the file, save header information when encountered, and return the - ' current Item XElement. - - ' loop through Customer elements - While _reader.Read() - If _reader.NodeType = Xml.XmlNodeType.Element Then - Select Case _reader.Name - Case "Customer" - ' move to Name element - While _reader.Read() - - If _reader.NodeType = Xml.XmlNodeType.Element AndAlso - _reader.Name = "Name" Then - - name = TryCast(XElement.ReadFrom(_reader), XElement) - _customerName = If(name IsNot Nothing, name.Value, "") - Exit While End If - End While - Case "Item" - item = TryCast(XElement.ReadFrom(_reader), XElement) - Dim tempRoot = - <%= _customerName %> - <%= item %> - - _current = item - Return True - End Select - End If - End While - - Return False - End Function + ElseIf Not reader.Read() Then + Exit While + End If - Public Sub Reset() Implements IEnumerator.Reset - _reader = Xml.XmlReader.Create(_uri) - _reader.MoveToContent() - End Sub + End While -#Region "IDisposable Support" - Private disposedValue As Boolean ' To detect redundant calls - - ' IDisposable - Protected Overridable Sub Dispose(ByVal disposing As Boolean) - If Not Me.disposedValue Then - If disposing Then - _reader.Close() - End If - End If - Me.disposedValue = True - End Sub + End If + + Loop While reader.Read() - Public Sub Dispose() Implements IDisposable.Dispose - Dispose(True) - GC.SuppressFinalize(Me) + End Using + End Function + + Sub Main() + Dim root = New XStreamingElement("Root", + From el In StreamCustomerItem("Source.xml") + Select + <%= el.Parent..Value %> + <%= el. %> + + ) + root.Save("Test.xml") + Console.WriteLine(File.ReadAllText("Test.xml")) End Sub -#End Region -End Class +End Module ``` This example produces the following output: @@ -328,53 +275,50 @@ Using for streaming the output XML is p ```csharp static IEnumerable StreamCustomerItem(string uri) { - using (XmlReader reader = XmlReader.Create(uri)) - { - XElement name = null; - XElement item = null; + using XmlReader reader = XmlReader.Create(uri); - reader.MoveToContent(); + reader.MoveToContent(); - // Parse the file, save header information when encountered, and yield the - // Item XElement objects as they're created. - // Loop through Customer elements. - while (reader.Read()) + // Parse the file, save header information when encountered, and yield the + // Item XElement objects as they're created. + + // Loop through Customer elements + do + { + if (reader.NodeType == XmlNodeType.Element && reader.Name == "Customer") { - if (reader.NodeType == XmlNodeType.Element - && reader.Name == "Customer") + // Move to Name element + XElement? name = null; + do { - // move to Name element - while (reader.Read()) + if (reader.NodeType == XmlNodeType.Element && reader.Name == "Name") { - if (reader.NodeType == XmlNodeType.Element && - reader.Name == "Name") - { - name = XElement.ReadFrom(reader) as XElement; - break; - } + name = XNode.ReadFrom(reader) as XElement; + break; } + } + while (reader.Read()); - // Loop through Item elements - while (reader.Read()) + // Loop through Item elements + while (reader.NodeType != XmlNodeType.EndElement) + { + if (reader.NodeType == XmlNodeType.Element && reader.Name == "Item") { - if (reader.NodeType == XmlNodeType.EndElement) - break; - if (reader.NodeType == XmlNodeType.Element - && reader.Name == "Item") + if (XNode.ReadFrom(reader) is XElement item && name != null) { - item = XElement.ReadFrom(reader) as XElement; - if (item != null) { - XElement tempRoot = new XElement("Root", - new XElement(name) - ); - tempRoot.Add(item); - yield return item; - } + XElement tempRoot = new XElement("Root", + new XElement(name), + item + ); + yield return item; } } + else if (!reader.Read()) + break; } } } + while (reader.Read()); } static void Main(string[] args) @@ -401,10 +345,69 @@ static void Main(string[] args) ``` ```vb +Imports System.IO +Imports System.Xml + Module Module1 + + Public Iterator Function StreamCustomerItem(uri As String) As IEnumerable(Of XElement) + Using reader As XmlReader = XmlReader.Create(uri) + reader.MoveToContent() + + ' Parse the file, save header information when encountered, And yield the + ' Item XElement objects as they're created. + + ' Loop through Customer elements + Do + + If reader.NodeType = XmlNodeType.Element And reader.Name = "Customer" Then + + ' Move to Name element + Dim name As XElement = Nothing + Do + If reader.NodeType = XmlNodeType.Element And reader.Name = "Name" Then + + name = TryCast(XNode.ReadFrom(reader), XElement) + Exit Do + + End If + + Loop While reader.Read() + + ' Loop through Item elements + While reader.NodeType <> XmlNodeType.EndElement + + If reader.NodeType = XmlNodeType.Element And reader.Name = "Item" Then + + Dim item = TryCast(XNode.ReadFrom(reader), XElement) + + If name IsNot Nothing AndAlso item IsNot Nothing Then + + Dim tempRoot = + <%= name.Value %> + <%= item %> + + + Yield item + + End If + + ElseIf Not reader.Read() Then + Exit While + End If + + End While + + End If + + Loop While reader.Read() + + End Using + End Function + Sub Main() Dim srcTree = - From el In New StreamCustomerItem("Source.xml") + From el In StreamCustomerItem("Source.xml") Select <%= el.Parent..Value %> <%= el. %> @@ -421,119 +424,11 @@ Module Module1 xw.WriteEndElement() End Using - Dim s = My.Computer.FileSystem.ReadAllText("Output.xml") + Dim s = File.ReadAllText("Output.xml") Console.WriteLine(s) End Sub -End Module - -Public Class StreamCustomerItem - Implements IEnumerable(Of XElement) - - Private _uri As String - - Public Sub New(ByVal uri As String) - _uri = uri - End Sub - - Public Function GetEnumerator() As IEnumerator(Of XElement) Implements IEnumerable(Of XElement).GetEnumerator - Return New StreamCustomerItemEnumerator(_uri) - End Function - - Public Function GetEnumerator1() As IEnumerator Implements IEnumerable.GetEnumerator - Return Me.GetEnumerator() - End Function -End Class - -Public Class StreamCustomerItemEnumerator - Implements IEnumerator(Of XElement) - - Private _current As XElement - Private _customerName As String - Private _reader As Xml.XmlReader - Private _uri As String - - Public Sub New(ByVal uri As String) - _uri = uri - _reader = Xml.XmlReader.Create(_uri) - _reader.MoveToContent() - End Sub - - Public ReadOnly Property Current As XElement Implements IEnumerator(Of XElement).Current - Get - Return _current - End Get - End Property - - Public ReadOnly Property Current1 As Object Implements IEnumerator.Current - Get - Return Me.Current - End Get - End Property - - Public Function MoveNext() As Boolean Implements IEnumerator.MoveNext - Dim item As XElement - Dim name As XElement - - ' Parse the file, save header information when encountered, and return the - ' current Item XElement. - - ' loop through Customer elements - While _reader.Read() - If _reader.NodeType = Xml.XmlNodeType.Element Then - Select Case _reader.Name - Case "Customer" - ' move to Name element - While _reader.Read() - - If _reader.NodeType = Xml.XmlNodeType.Element AndAlso - _reader.Name = "Name" Then - - name = TryCast(XElement.ReadFrom(_reader), XElement) - _customerName = If(name IsNot Nothing, name.Value, "") - Exit While - End If - - End While - Case "Item" - item = TryCast(XElement.ReadFrom(_reader), XElement) - Dim tempRoot = - <%= _customerName %> - <%= item %> - - _current = item - Return True - End Select - End If - End While - - Return False - End Function - - Public Sub Reset() Implements IEnumerator.Reset - _reader = Xml.XmlReader.Create(_uri) - _reader.MoveToContent() - End Sub - -#Region "IDisposable Support" - Private disposedValue As Boolean ' To detect redundant calls - - ' IDisposable - Protected Overridable Sub Dispose(ByVal disposing As Boolean) - If Not Me.disposedValue Then - If disposing Then - _reader.Close() - End If - End If - Me.disposedValue = True - End Sub - Public Sub Dispose() Implements IDisposable.Dispose - Dispose(True) - GC.SuppressFinalize(Me) - End Sub -#End Region - -End Class +End Module ``` This example produces the following output: diff --git a/docs/standard/linq/stream-xml-fragments-access-header-information.md b/docs/standard/linq/stream-xml-fragments-access-header-information.md index dd732daf6886b..259e977e7a1d3 100644 --- a/docs/standard/linq/stream-xml-fragments-access-header-information.md +++ b/docs/standard/linq/stream-xml-fragments-access-header-information.md @@ -76,54 +76,50 @@ The following example shows how to implement and use a custom axis method that s ```csharp static IEnumerable StreamCustomerItem(string uri) { - using (XmlReader reader = XmlReader.Create(uri)) - { - XElement name = null; - XElement item = null; + using XmlReader reader = XmlReader.Create(uri); - reader.MoveToContent(); + reader.MoveToContent(); - // Parse the file, save header information when encountered, and yield the - // Item XElement objects as they're created. + // Parse the file, save header information when encountered, and yield the + // Item XElement objects as they're created. - // loop through Customer elements - while (reader.Read()) + // Loop through Customer elements + do + { + if (reader.NodeType == XmlNodeType.Element && reader.Name == "Customer") { - if (reader.NodeType == XmlNodeType.Element - && reader.Name == "Customer") + // Move to Name element + XElement? name = null; + do { - // move to Name element - while (reader.Read()) + if (reader.NodeType == XmlNodeType.Element && reader.Name == "Name") { - if (reader.NodeType == XmlNodeType.Element && - reader.Name == "Name") - { - name = XElement.ReadFrom(reader) as XElement; - break; - } + name = XNode.ReadFrom(reader) as XElement; + break; } + } + while (reader.Read()); - // Loop through Item elements - while (reader.Read()) + // Loop through Item elements + while (reader.NodeType != XmlNodeType.EndElement) + { + if (reader.NodeType == XmlNodeType.Element && reader.Name == "Item") { - if (reader.NodeType == XmlNodeType.EndElement) - break; - if (reader.NodeType == XmlNodeType.Element - && reader.Name == "Item") + if (XNode.ReadFrom(reader) is XElement item && name != null) { - item = XElement.ReadFrom(reader) as XElement; - if (item != null) { - XElement tempRoot = new XElement("Root", - new XElement(name) - ); - tempRoot.Add(item); - yield return item; - } + XElement tempRoot = new XElement("Root", + new XElement(name), + item + ); + yield return item; } } + else if (!reader.Read()) + break; } } } + while (reader.Read()); } static void Main(string[] args) @@ -141,134 +137,82 @@ static void Main(string[] args) ``` ```vb +Imports System.Xml + Module Module1 - Sub Main() - Dim xmlTree = - <%= - From el In New StreamCustomerItem("Source.xml") - Let itemKey = CInt(el..Value) - Where itemKey >= 3 AndAlso itemKey <= 7 - Select - <%= el.Parent..Value %> - <%= el. %> - - %> - + Public Iterator Function StreamCustomerItem(uri As String) As IEnumerable(Of XElement) + Using reader As XmlReader = XmlReader.Create(uri) + reader.MoveToContent() - Console.WriteLine(xmlTree) - End Sub + ' Parse the file, save header information when encountered, And yield the + ' Item XElement objects as they're created. -End Module + ' Loop through Customer elements + Do -Public Class StreamCustomerItem - Implements IEnumerable(Of XElement) + If reader.NodeType = XmlNodeType.Element And reader.Name = "Customer" Then - Private _uri As String + ' Move to Name element + Dim name As XElement = Nothing + Do + If reader.NodeType = XmlNodeType.Element And reader.Name = "Name" Then - Public Sub New(ByVal uri As String) - _uri = uri - End Sub + name = TryCast(XNode.ReadFrom(reader), XElement) + Exit Do - Public Function GetEnumerator() As IEnumerator(Of XElement) Implements IEnumerable(Of XElement).GetEnumerator - Return New StreamCustomerItemEnumerator(_uri) - End Function + End If - Public Function GetEnumerator1() As IEnumerator Implements IEnumerable.GetEnumerator - Return Me.GetEnumerator() - End Function -End Class + Loop While reader.Read() -Public Class StreamCustomerItemEnumerator - Implements IEnumerator(Of XElement) + ' Loop through Item elements + While reader.NodeType <> XmlNodeType.EndElement - Private _current As XElement - Private _customerName As String - Private _reader As Xml.XmlReader - Private _uri As String + If reader.NodeType = XmlNodeType.Element And reader.Name = "Item" Then - Public Sub New(ByVal uri As String) - _uri = uri - _reader = Xml.XmlReader.Create(_uri) - _reader.MoveToContent() - End Sub + Dim item = TryCast(XNode.ReadFrom(reader), XElement) + + If name IsNot Nothing AndAlso item IsNot Nothing Then + + Dim tempRoot = + <%= name.Value %> + <%= item %> + + + Yield item - Public ReadOnly Property Current As XElement Implements IEnumerator(Of XElement).Current - Get - Return _current - End Get - End Property - - Public ReadOnly Property Current1 As Object Implements IEnumerator.Current - Get - Return Me.Current - End Get - End Property - - Public Function MoveNext() As Boolean Implements IEnumerator.MoveNext - Dim item As XElement - Dim name As XElement - - ' Parse the file, save header information when encountered, and return the - ' current Item XElement. - - ' loop through Customer elements - While _reader.Read() - If _reader.NodeType = Xml.XmlNodeType.Element Then - Select Case _reader.Name - Case "Customer" - ' move to Name element - While _reader.Read() - - If _reader.NodeType = Xml.XmlNodeType.Element AndAlso - _reader.Name = "Name" Then - - name = TryCast(XElement.ReadFrom(_reader), XElement) - _customerName = If(name IsNot Nothing, name.Value, "") - Exit While End If - End While - Case "Item" - item = TryCast(XElement.ReadFrom(_reader), XElement) - Dim tempRoot = - <%= _customerName %> - <%= item %> - - _current = item - Return True - End Select - End If - End While - - Return False - End Function + ElseIf Not reader.Read() Then + Exit While + End If - Public Sub Reset() Implements IEnumerator.Reset - _reader = Xml.XmlReader.Create(_uri) - _reader.MoveToContent() - End Sub + End While -#Region "IDisposable Support" - Private disposedValue As Boolean ' To detect redundant calls - - ' IDisposable - Protected Overridable Sub Dispose(ByVal disposing As Boolean) - If Not Me.disposedValue Then - If disposing Then - _reader.Close() - End If - End If - Me.disposedValue = True - End Sub + End If + + Loop While reader.Read() + + End Using + End Function + + Sub Main() + Dim xmlTree = + <%= + From el In StreamCustomerItem("Source.xml") + Let itemKey = CInt(el..Value) + Where itemKey >= 3 AndAlso itemKey <= 7 + Select + <%= el.Parent..Value %> + <%= el. %> + + %> + - Public Sub Dispose() Implements IDisposable.Dispose - Dispose(True) - GC.SuppressFinalize(Me) + Console.WriteLine(xmlTree) End Sub -#End Region -End Class +End Module ``` This code produces the following output: diff --git a/docs/standard/native-interop/best-practices.md b/docs/standard/native-interop/best-practices.md index ca439797deb37..8ed52a0994061 100644 --- a/docs/standard/native-interop/best-practices.md +++ b/docs/standard/native-interop/best-practices.md @@ -400,6 +400,8 @@ Pointers to structs in definitions must either be passed by `ref` or use `unsafe ✔️ DO use the C# `sizeof()` instead of `Marshal.SizeOf()` for blittable structures to improve performance. +❌ DON'T depend on internal representation of struct types exposed by .NET runtime libraries unless it is explicitly documented. + ❌ AVOID using classes to express complex native types through inheritance. ❌ AVOID using `System.Delegate` or `System.MulticastDelegate` fields to represent function pointer fields in structures. diff --git a/docs/whats-new/dotnet-docs-mod0.md b/docs/whats-new/dotnet-docs-mod0.md index 9e23817330c66..bfd9c2efefa53 100644 --- a/docs/whats-new/dotnet-docs-mod0.md +++ b/docs/whats-new/dotnet-docs-mod0.md @@ -20,6 +20,18 @@ Welcome to what's new in the .NET docs for December 2024. This article lists som - [Nullable JsonDocument properties deserialize to JsonValueKind.Null](../core/compatibility/serialization/9.0/jsondocument-props.md) - [System.Windows.Forms.StatusStrip uses a different default renderer](../core/compatibility/windows-forms/9.0/statusstrip-renderer.md) +## AI in .NET + +### Updated articles + +- [Build a .NET AI vector search app](../ai/quickstarts/quickstart-ai-chat-with-data.md) - New vector search quickstart + +## ML.NET + +### Updated articles + +- [Machine learning tasks in ML.NET](../machine-learning/resources/tasks.md) - Add text classification and sentence similarity to ML tasks + ## .NET fundamentals ### New articles @@ -53,18 +65,6 @@ Welcome to what's new in the .NET docs for December 2024. This article lists som - [Attributes (F#)](../fsharp/language-reference/attributes.md) - F# 9 doc updates -## AI in .NET - -### Updated articles - -- [Build a .NET AI vector search app](../ai/quickstarts/quickstart-ai-chat-with-data.md) - New vector search quickstart - -## ML.NET - -### Updated articles - -- [Machine learning tasks in ML.NET](../machine-learning/resources/tasks.md) - Add text classification and sentence similarity to ML tasks - ## .NET Framework ### New articles diff --git a/docs/whats-new/dotnet-docs-mod1.md b/docs/whats-new/dotnet-docs-mod1.md index 9aa05785b14e3..e541843080de7 100644 --- a/docs/whats-new/dotnet-docs-mod1.md +++ b/docs/whats-new/dotnet-docs-mod1.md @@ -1,108 +1,123 @@ --- -title: ".NET docs: What's new for October 2024" -description: "What's new in the .NET docs for October 2024." -ms.custom: October-2024 -ms.date: 11/01/2024 +title: ".NET docs: What's new for January 2025" +description: "What's new in the .NET docs for January 2025." +ms.custom: January-2025 +ms.date: 02/01/2025 --- -# .NET docs: What's new for October 2024 +# .NET docs: What's new for January 2025 -Welcome to what's new in the .NET docs for October 2024. This article lists some of the major changes to docs during this period. +Welcome to what's new in the .NET docs for January 2025. This article lists some of the major changes to docs during this period. ## .NET breaking changes ### New articles -- [BinaryReader.GetString() returns \uFFFD on malformed sequences](../core/compatibility/core-libraries/9.0/binaryreader.md) -- [CET supported by default](../core/compatibility/interop/9.0/cet-support.md) -- [EnumConverter validates registered types to be enum](../core/compatibility/core-libraries/9.0/enumconverter.md) -- [New security analyzers](../core/compatibility/windows-forms/9.0/security-analyzers.md) -- [New TimeSpan.From*() overloads that take integers](../core/compatibility/core-libraries/9.0/timespan-from-overloads.md) -- [Some SVE APIs removed](../core/compatibility/jit/9.0/sve-apis.md) -- [User info in `mailto:` URIs is compared](../core/compatibility/networking/8.0/uri-comparison.md) -- [Windows private key lifetime simplified](../core/compatibility/cryptography/9.0/private-key-lifetime.md) +- [`dotnet sln add` no longer allows invalid file names](../core/compatibility/sdk/9.0/dotnet-sln.md) +- [ActivitySource.CreateActivity and ActivitySource.StartActivity behavior change](../core/compatibility/core-libraries/10.0/activity-sampling.md) +- [API obsoletions with non-default diagnostic IDs (.NET 10)](../core/compatibility/core-libraries/10.0/obsolete-apis.md) +- [Breaking changes in .NET 10](../core/compatibility/10.0.md) +- [C# 14 overload resolution with span parameters](../core/compatibility/core-libraries/10.0/csharp-overload-resolution.md) +- [Consistent shift behavior in generic math](../core/compatibility/core-libraries/10.0/generic-math.md) +- [Default RID used when targeting .NET Framework](../core/compatibility/sdk/9.0/default-rid.md) +- [Environment variable renamed to DOTNET_ICU_VERSION_OVERRIDE](../core/compatibility/globalization/10.0/version-override.md) +- [LDAP DirectoryControl parsing is now more stringent](../core/compatibility/core-libraries/10.0/ldap-directorycontrol-parsing.md) +- [MacCatalyst version normalization](../core/compatibility/core-libraries/10.0/maccatalyst-version-normalization.md) +- [Renamed parameter in HtmlElement.InsertAdjacentElement](../core/compatibility/windows-forms/10.0/insertadjacentelement-orientation.md) +- [TreeView checkbox image truncation](../core/compatibility/windows-forms/10.0/treeview-text-location.md) +- [X500DistinguishedName validation is stricter](../core/compatibility/cryptography/10.0/x500distinguishedname-validation.md) + +## AI in .NET + +### New articles + +- [Create a minimal AI assistant using .NET](../ai/quickstarts/quickstart-assistants.md) ## .NET fundamentals ### New articles -- [Analyze projects with .NET Upgrade Assistant](../core/porting/upgrade-assistant-how-to-analyze.md) -- [CA2022: Avoid inexact read with Stream.Read](../fundamentals/code-analysis/quality-rules/ca2022.md) -- [CA2265: Do not compare `Span` to `null` or `default`](../fundamentals/code-analysis/quality-rules/ca2265.md) -- [Configuration source generator](../core/extensions/configuration-generator.md) -- [Experimental features in .NET 9+](../fundamentals/syslib-diagnostics/experimental-overview.md) -- [Intrinsic APIs marked RequiresUnreferencedCode](../core/deploying/trimming/intrinsic-requiresunreferencedcode-apis.md) -- [Microsoft.Testing.Platform architecture](../core/testing/unit-testing-platform-architecture.md) -- [Microsoft.Testing.Platform capabilities](../core/testing/unit-testing-platform-architecture-capabilities.md) -- [Microsoft.Testing.Platform extensibility](../core/testing/unit-testing-platform-architecture-extensions.md) -- [Microsoft.Testing.Platform Services](../core/testing/unit-testing-platform-architecture-services.md) -- [Native interoperability ABI support](../standard/native-interop/abi-support.md) -- [Respect nullable annotations](../standard/serialization/system-text-json/nullable-annotations.md) -- [SYSLIB1230: Deriving from a `GeneratedComInterface`-attributed interface defined in another assembly is not supported](../fundamentals/syslib-diagnostics/syslib1230.md) -- [Upgrade projects with .NET Upgrade Assistant](../core/porting/upgrade-assistant-how-to-upgrade.md) -- [What is code analysis with .NET Upgrade Assistant?](../core/porting/upgrade-assistant-analyze-overview.md) -- [Extract schema](../standard/serialization/system-text-json/extract-schema.md) +- [.NET SDK container creation overview](../core/containers/overview.md) +- [CA2024: Do not use StreamReader.EndOfStream in async methods](../fundamentals/code-analysis/quality-rules/ca2024.md) +- [Containerize a .NET app with dotnet publish](../core/containers/sdk-publish.md) +- [Distributed tracing in System.Net libraries](../fundamentals/networking/telemetry/tracing.md) +- [Keyed DI support in `IHttpClientFactory`](../core/extensions/httpclient-factory-keyed-di.md) +- [MSTEST0038: Don't use 'Assert.AreSame' or 'Assert.AreNotSame' with value types](../core/testing/mstest-analyzers/mstest0038.md) +- [MSTEST0039: Use newer 'Assert.Throws' methods](../core/testing/mstest-analyzers/mstest0039.md) +- [MSTEST0040: Do not assert inside 'async void' contexts](../core/testing/mstest-analyzers/mstest0040.md) +- [NETSDK1032: RuntimeIdentifier and PlatformTarget must be compatible](../core/tools/sdk-errors/netsdk1032.md) +- [NETSDK1144: Optimizing assemblies for size failed](../core/tools/sdk-errors/netsdk1144.md) +- [Preview APIs](../fundamentals/runtime-libraries/preview-apis.md) +- [QUIC configuration options](../fundamentals/networking/quic/quic-options.md) +- [Serialization extension methods on HttpClient](../standard/serialization/system-text-json/httpclient-extensions.md) +- [SYSLIB0058: Certain SslStream properties are obsolete](../fundamentals/syslib-diagnostics/syslib0058.md) +- [SYSLIB0059: SystemEvents.EventsThreadShutdown callbacks aren't run before the process exits](../fundamentals/syslib-diagnostics/syslib0059.md) +- [SYSLIB0060: Rfc2898DeriveBytes constructors are obsolete](../fundamentals/syslib-diagnostics/syslib0060.md) + +### Updated articles + +- [Creating metrics](../core/diagnostics/metrics-instrumentation.md) - [diagnostics] Add InstrumentAdvice details to instrumentation doc +- [dotnet-coverage code coverage utility](../core/additional-tools/dotnet-coverage.md) - Update dotnet-coverage docs. Adding uninstrument command +- [Microsoft.Testing.Platform and VSTest comparison](../core/testing/unit-testing-platform-vs-vstest.md) - Add first level info for migration off of VSTest +- [Tutorial: Containerize a .NET app](../core/docker/build-container.md) - Address issues related to .NET containers + +## C# language + +### New articles + +- [Custom attributes that generate flags or options in the Intermediate Language (IL) output](../csharp/language-reference/attributes/pseudo-attributes.md) + +## Visual Basic language ### Updated articles -- [HttpWebRequest to HttpClient migration guide](../fundamentals/networking/http/httpclient-migrate-from-httpwebrequest.md) - Fix build suggestions -- [Install .NET on macOS](../core/install/macos.md) - Rewrite install on macOS article +- [Generic types in Visual Basic (Visual Basic)](../visual-basic/programming-guide/language-features/data-types/generic-types.md) - Add VB new features ## Azure SDK for .NET ### New articles -- [Use Copilot Conversational Assessment with the Azure Migrate application and code assessment tool.](../azure/migration/appcat/visual-studio-copilot.md) +- [Authentication best practices with the Azure Identity library for .NET](../azure/sdk/authentication/best-practices.md) + +## Microsoft Orleans + +### New articles + +- [Grain directory implementation](../orleans/implementation/grain-directory.md) + +### Updated articles + +- [Background Services and Startup Tasks](../orleans/host/configuration-guide/startup-tasks.md) - [Orleans] Update startup tasks guidance +- [Cluster management in Orleans](../orleans/implementation/cluster-management.md) - [Orleans] Update clustering implementation docs ## .NET Framework ### New articles -- [February 2024 security and quality rollup](../framework/release-notes/2024/02-14-february-security-and-quality-rollup.md) -- [January 2024 cumulative update preview](../framework/release-notes/2024/01-23-january-preview-cumulative-update.md) -- [January 2024 security and quality rollup](../framework/release-notes/2024/01-09-january-security-and-quality-rollup.md) -- [March 2024 cumulative update preview](../framework/release-notes/2024/03-26-march-preview-cumulative-update.md) -- [October 2024 cumulative update preview](../framework/release-notes/2024/10-22-october-preview-cumulative-update.md) -- [October 2024 security and quality rollup](../framework/release-notes/2024/10-08-october-security-and-quality-rollup.md) +- [.NET Framework release notes](../framework/release-notes/release-notes.md) +- [January 2025 cumulative update](../framework/release-notes/2025/01-14-january-cumulative-update.md) ## Community contributors The following people contributed to the .NET docs during this period. Thank you! Learn how to contribute by following the links under "Get involved" in the [what's new landing page](index.yml). -- [shethaadit](https://github.com/shethaadit) - Adit Sheth ![3 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-3-green) -- [BartoszKlonowski](https://github.com/BartoszKlonowski) - Bartosz Klonowski ![2 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-2-green) -- [bigboybamo](https://github.com/bigboybamo) - Olabamiji Oyetubo ![2 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-2-green) -- [juner](https://github.com/juner) - juner ![2 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-2-green) -- [Marusyk](https://github.com/Marusyk) - Roman Marusyk ![2 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-2-green) -- [timdeschryver](https://github.com/timdeschryver) - Tim Deschryver ![2 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-2-green) -- [aarijimam](https://github.com/aarijimam) - Nawab Aarij Imam ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [alexravenna](https://github.com/alexravenna) - Alex Ravenna ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [am11](https://github.com/am11) - Adeel Mujahid ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [ardalis](https://github.com/ardalis) - Steve Smith ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [azarboon](https://github.com/azarboon) - Mahdi Azarboon ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [batkaevruslan](https://github.com/batkaevruslan) - Ruslan Batkaev ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [BigT-88](https://github.com/BigT-88) - ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [colejohnson66](https://github.com/colejohnson66) - Cole Tobin ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [fabrizziocht](https://github.com/fabrizziocht) - Fabrizzio Chavez ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [gbamqzkdyg](https://github.com/gbamqzkdyg) - Luca Ma ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [glen-84](https://github.com/glen-84) - Glen ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [hakenr](https://github.com/hakenr) - Robert Haken ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [HugoRoss](https://github.com/HugoRoss) - Christoph Hafner ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [ichensky](https://github.com/ichensky) - Ivan Chensky ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [janus-toendering](https://github.com/janus-toendering) - Janus Tøndering ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [jochenkirstaetter](https://github.com/jochenkirstaetter) - Jochen Kirstätter ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [jsedlak](https://github.com/jsedlak) - John Sedlak ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [magiudev](https://github.com/magiudev) - Miguel Angel Echeverri Quiroz ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [MarGraz](https://github.com/MarGraz) - ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [Navis304](https://github.com/Navis304) - Robert ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [omajid](https://github.com/omajid) - Omair Majid ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [PawelAdamczuk](https://github.com/PawelAdamczuk) - Paweł Adamczuk ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [pragnya17](https://github.com/pragnya17) - Pragnya ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [Rageking8](https://github.com/Rageking8) - ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) +- [shethaadit](https://github.com/shethaadit) - Adit Sheth ![17 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-17-green) +- [BartoszKlonowski](https://github.com/BartoszKlonowski) - Bartosz Klonowski ![7 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-7-green) +- [azarboon](https://github.com/azarboon) - Mahdi Azarboon ![3 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-3-green) +- [theluckyprogrammer](https://github.com/theluckyprogrammer) - Tomasz Osmanowski ![3 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-3-green) +- [mpidash](https://github.com/mpidash) - Mario Pistrich ![2 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-2-green) +- [Rageking8](https://github.com/Rageking8) - ![2 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-2-green) +- [frdij](https://github.com/frdij) - Frans van Dijk ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) +- [gregoryagu](https://github.com/gregoryagu) - Greg Gum ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) +- [joproulx](https://github.com/joproulx) - Jonathan ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) +- [K4PS3](https://github.com/K4PS3) - khaled ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) +- [MangelMaxime](https://github.com/MangelMaxime) - Maxime Mangel ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) +- [mguinness](https://github.com/mguinness) - ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) +- [RandaZraik](https://github.com/RandaZraik) - Randa Zraik ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) +- [rkargMsft](https://github.com/rkargMsft) - ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) - [samwherever](https://github.com/samwherever) - Sam Allen ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [Swimburger](https://github.com/Swimburger) - Niels Swimberghe ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [vcrobe](https://github.com/vcrobe) - ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [WeihanLi](https://github.com/WeihanLi) - Weihan Li ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [xakep139](https://github.com/xakep139) - Nikita Balabaev ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [xtqqczze](https://github.com/xtqqczze) - ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) -- [Youssef1313](https://github.com/Youssef1313) - Youssef Victor ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) +- [SetTrend](https://github.com/SetTrend) - Axel D. ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) +- [ShaoHans](https://github.com/ShaoHans) - ShaoHans ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) +- [wasabii](https://github.com/wasabii) - Jerome Haltom ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) +- [willibrandon](https://github.com/willibrandon) - Brandon Williams ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) +- [zacharylayne](https://github.com/zacharylayne) - ![1 pull requests.](https://img.shields.io/badge/Merged%20Pull%20Requests-1-green) diff --git a/docs/whats-new/dotnet-docs-mod2.md b/docs/whats-new/dotnet-docs-mod2.md index e2fde6f7de705..404e98790e100 100644 --- a/docs/whats-new/dotnet-docs-mod2.md +++ b/docs/whats-new/dotnet-docs-mod2.md @@ -29,6 +29,12 @@ Welcome to what's new in the .NET docs for November 2024. This article lists som - [Version requirements for .NET 9 SDK](../core/compatibility/sdk/9.0/version-requirements.md) - [Warning emitted when targeting net7.0](../core/compatibility/sdk/9.0/net70-warning.md) +## AI in .NET + +### New articles + +- [Unified AI building blocks for .NET using Microsoft.Extensions.AI](../ai/ai-extensions.md) + ## .NET fundamentals ### New articles @@ -59,12 +65,6 @@ Welcome to what's new in the .NET docs for November 2024. This article lists som - [What's new in F# 9](../fsharp/whats-new/fsharp-9.md) -## AI in .NET - -### New articles - -- [Unified AI building blocks for .NET using Microsoft.Extensions.AI](../ai/ai-extensions.md) - ## Azure SDK for .NET ### New articles diff --git a/docs/whats-new/index.yml b/docs/whats-new/index.yml index b619df0b27c61..77740c2ee93ae 100644 --- a/docs/whats-new/index.yml +++ b/docs/whats-new/index.yml @@ -5,7 +5,7 @@ summary: Welcome to what's new in .NET and .NET docs. Use this page to navigate metadata: title: .NET what's new? description: Learn about new .NET features and new and updated content in .NET docs. - ms.date: 01/14/2025 + ms.date: 02/01/2025 ms.topic: landing-page landingContent: - title: .NET 9 release updates @@ -42,12 +42,12 @@ landingContent: linkLists: - linkListType: whats-new links: + - text: January 2025 + url: dotnet-docs-mod1.md - text: December 2024 url: dotnet-docs-mod0.md - text: November 2024 url: dotnet-docs-mod2.md - - text: October 2024 - url: dotnet-docs-mod1.md - title: Language updates linkLists: - linkListType: whats-new diff --git a/docs/whats-new/toc.yml b/docs/whats-new/toc.yml index 1c67a13daa766..99164b8e424be 100644 --- a/docs/whats-new/toc.yml +++ b/docs/whats-new/toc.yml @@ -6,12 +6,12 @@ items: - name: Latest documentation updates expanded: true items: + - name: January 2025 + href: dotnet-docs-mod1.md - name: December 2024 href: dotnet-docs-mod0.md - name: November 2024 href: dotnet-docs-mod2.md - - name: October 2024 - href: dotnet-docs-mod1.md - name: Product updates items: - name: .NET 9