diff --git a/.github/workflows/quest-bulk.yml b/.github/workflows/quest-bulk.yml index ceb7f0ceec33d..14fc58caa6446 100644 --- a/.github/workflows/quest-bulk.yml +++ b/.github/workflows/quest-bulk.yml @@ -29,7 +29,7 @@ jobs: ImportOptions__ApiKeys__OSPOKey: ${{ secrets.OSPO_KEY }} ImportOptions__ApiKeys__QuestKey: ${{ secrets.QUEST_KEY }} ImportOptions__ApiKeys__SequesterPrivateKey: ${{ secrets.SEQUESTER_PRIVATEKEY }} - ImportOptions__ApiKeys__SequesterAppID: ${{ secrets.SEQUESTER_SEQUESTER_APPID }} + ImportOptions__ApiKeys__SequesterAppID: ${{ secrets.SEQUESTER_APPID }} with: org: ${{ github.repository_owner }} diff --git a/.github/workflows/quest.yml b/.github/workflows/quest.yml index 48608c4461afe..b019ca56885b9 100644 --- a/.github/workflows/quest.yml +++ b/.github/workflows/quest.yml @@ -38,6 +38,8 @@ jobs: ImportOptions__ApiKeys__GitHubToken: ${{ secrets.GITHUB_TOKEN }} ImportOptions__ApiKeys__OSPOKey: ${{ secrets.OSPO_KEY }} ImportOptions__ApiKeys__QuestKey: ${{ secrets.QUEST_KEY }} + ImportOptions__ApiKeys__SequesterPrivateKey: ${{ secrets.SEQUESTER_PRIVATEKEY }} + ImportOptions__ApiKeys__SequesterAppID: ${{ secrets.SEQUESTER_APPID }} with: org: ${{ github.repository_owner }} repo: ${{ github.repository }} @@ -52,6 +54,8 @@ jobs: ImportOptions__ApiKeys__GitHubToken: ${{ secrets.GITHUB_TOKEN }} ImportOptions__ApiKeys__OSPOKey: ${{ secrets.OSPO_KEY }} ImportOptions__ApiKeys__QuestKey: ${{ secrets.QUEST_KEY }} + ImportOptions__ApiKeys__SequesterPrivateKey: ${{ secrets.SEQUESTER_PRIVATEKEY }} + ImportOptions__ApiKeys__SequesterAppID: ${{ secrets.SEQUESTER_APPID }} with: org: ${{ github.repository_owner }} repo: ${{ github.repository }} diff --git a/.openpublishing.redirection.core.json b/.openpublishing.redirection.core.json index d36b3219086e7..a5fe65b752eff 100644 --- a/.openpublishing.redirection.core.json +++ b/.openpublishing.redirection.core.json @@ -1217,6 +1217,11 @@ "source_path_from_root": "/docs/core/versions/version-history.md", "redirect_url": "/dotnet/core/versions/selection" }, + { + "source_path_from_root": "/docs/core/whats-new/dotnet-8.md", + "redirect_url": "/dotnet/core/whats-new/dotnet-8/overview", + "redirect_document_id": true + }, { "source_path_from_root": "/docs/core/whats-new/index.md", "redirect_url": "/dotnet/core/whats-new/dotnet-7", diff --git a/docs/azure/ai/get-started-app-chat-template.md b/docs/azure/ai/get-started-app-chat-template.md index f7ac995b81221..30697a4060acc 100644 --- a/docs/azure/ai/get-started-app-chat-template.md +++ b/docs/azure/ai/get-started-app-chat-template.md @@ -160,7 +160,7 @@ The sample repository contains all the code and configuration files you need to ### Deploy chat app to Azure > [!IMPORTANT] -> Azure resources created in this section immediate costs, primarily from the Azure AI Search resource. These resources may accrue costs even if you interrupt the command before it is fully executed. +> Azure resources created in this section incur immediate costs, primarily from the Azure AI Search resource. These resources may accrue costs even if you interrupt the command before it is fully executed. 1. Run the following Azure Developer CLI command to provision the Azure resources and deploy the source code: diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md index 159f804c92738..f3acc00c174b4 100644 --- a/docs/azure/includes/dotnet-all.md +++ b/docs/azure/includes/dotnet-all.md @@ -7,6 +7,7 @@ | Azure AI Search | NuGet [11.5.1](https://www.nuget.org/packages/Azure.Search.Documents/11.5.1)
NuGet [11.6.0-beta.2](https://www.nuget.org/packages/Azure.Search.Documents/11.6.0-beta.2) | [docs](/dotnet/api/overview/azure/Search.Documents-readme) | GitHub [11.5.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Search.Documents_11.5.1/sdk/search/Azure.Search.Documents/)
GitHub [11.6.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Search.Documents_11.6.0-beta.2/sdk/search/Azure.Search.Documents/) | | Azure Object Anchors Conversion | NuGet [0.3.0-beta.6](https://www.nuget.org/packages/Azure.MixedReality.ObjectAnchors.Conversion/0.3.0-beta.6) | [docs](/dotnet/api/overview/azure/MixedReality.ObjectAnchors.Conversion-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [0.3.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.MixedReality.ObjectAnchors.Conversion_0.3.0-beta.6/sdk/objectanchors/Azure.MixedReality.ObjectAnchors.Conversion/) | | Azure Remote Rendering | NuGet [1.1.0](https://www.nuget.org/packages/Azure.MixedReality.RemoteRendering/1.1.0) | [docs](/dotnet/api/overview/azure/MixedReality.RemoteRendering-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.MixedReality.RemoteRendering_1.1.0/sdk/remoterendering/Azure.MixedReality.RemoteRendering/) | +| AzureMonitor OpenTelemetry LiveMetrics | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.LiveMetrics/1.0.0-beta.1) | | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.LiveMetrics_1.0.0-beta.1/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/) | | Communication Call Automation | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Communication.CallAutomation/1.1.0) | [docs](/dotnet/api/overview/azure/Communication.CallAutomation-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.CallAutomation_1.1.0/sdk/communication/Azure.Communication.CallAutomation/) | | Communication Chat | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Communication.Chat/1.2.0) | [docs](/dotnet/api/overview/azure/Communication.Chat-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Chat_1.2.0/sdk/communication/Azure.Communication.Chat/) | | Communication Common | NuGet [1.2.1](https://www.nuget.org/packages/Azure.Communication.Common/1.2.1)
NuGet [2.0.0-beta.1](https://www.nuget.org/packages/Azure.Communication.Common/2.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Communication.Common-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Common_1.2.1/sdk/communication/Azure.Communication.Common/)
GitHub [2.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Common_2.0.0-beta.1/sdk/communication/Azure.Communication.Common/) | @@ -59,7 +60,7 @@ | OpenAI Assistants | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.OpenAI.Assistants/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.OpenAI.Assistants-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI.Assistants_1.0.0-beta.2/sdk/openai/Azure.AI.OpenAI.Assistants/) | | OpenAI Inference | NuGet [1.0.0-beta.13](https://www.nuget.org/packages/Azure.AI.OpenAI/1.0.0-beta.13) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.13](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_1.0.0-beta.13/sdk/openai/Azure.AI.OpenAI/) | | OpenTelemetry AspNetCore | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.AspNetCore/1.1.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.AspNetCore-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.AspNetCore_1.1.0/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/) | -| OpenTelemetry Exporter | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.2.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.Exporter-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.2.0/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/) | +| OpenTelemetry Exporter | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.2.0)
NuGet [1.3.0-beta.1](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.3.0-beta.1) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.Exporter-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.2.0/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/)
GitHub [1.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.3.0-beta.1/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/) | | Personalizer | NuGet [2.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Personalizer/2.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Personalizer-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [2.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Personalizer_2.0.0-beta.2/sdk/personalizer/Azure.AI.Personalizer/) | | Purview Account | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.Purview.Account/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.Purview.Account-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.Purview.Account_1.0.0-beta.1/sdk/purview/Azure.Analytics.Purview.Account/) | | Purview Administration | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.Purview.Administration/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.Purview.Administration-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.Purview.Administration_1.0.0-beta.1/sdk/purview/Azure.Analytics.Purview.Administration/) | @@ -266,7 +267,7 @@ | Resource Management - Service Networking | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.ServiceNetworking/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ServiceNetworking-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceNetworking_1.0.1/sdk/servicenetworking/Azure.ResourceManager.ServiceNetworking/) | | Resource Management - SignalR | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.SignalR/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.SignalR-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SignalR_1.1.0/sdk/signalr/Azure.ResourceManager.SignalR/) | | Resource Management - Sphere | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.Sphere/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Sphere-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Sphere_1.0.0-beta.2/sdk/sphere/Azure.ResourceManager.Sphere/) | -| Resource Management - SQL | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.Sql/1.2.0)
NuGet [1.3.0-beta.4](https://www.nuget.org/packages/Azure.ResourceManager.Sql/1.3.0-beta.4) | [docs](/dotnet/api/overview/azure/ResourceManager.Sql-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Sql_1.2.0/sdk/sqlmanagement/Azure.ResourceManager.Sql/)
GitHub [1.3.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Sql_1.3.0-beta.4/sdk/sqlmanagement/Azure.ResourceManager.Sql/) | +| Resource Management - SQL | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.Sql/1.2.0)
NuGet [1.3.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.Sql/1.3.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.Sql-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Sql_1.2.0/sdk/sqlmanagement/Azure.ResourceManager.Sql/)
GitHub [1.3.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Sql_1.3.0-beta.5/sdk/sqlmanagement/Azure.ResourceManager.Sql/) | | Resource Management - SQL Virtual Machine | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.SqlVirtualMachine/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.SqlVirtualMachine-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SqlVirtualMachine_1.1.0/sdk/sqlvirtualmachine/Azure.ResourceManager.SqlVirtualMachine/) | | Resource Management - Storage | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.Storage/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Storage-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Storage_1.2.0/sdk/storage/Azure.ResourceManager.Storage/) | | Resource Management - Storage Cache | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.StorageCache/1.2.0)
NuGet [1.3.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.StorageCache/1.3.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageCache-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageCache_1.2.0/sdk/storagecache/Azure.ResourceManager.StorageCache/)
GitHub [1.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageCache_1.3.0-beta.1/sdk/storagecache/Azure.ResourceManager.StorageCache/) | @@ -317,7 +318,7 @@ | Common - Authentication | NuGet [1.7.0-preview](https://www.nuget.org/packages/Microsoft.Azure.Common.Authentication/1.7.0-preview) | | | | Common - Dependencies | NuGet [1.0.0](https://www.nuget.org/packages/Microsoft.Azure.Common.Dependencies/1.0.0) | | | | Computer Vision | NuGet [7.0.1](https://www.nuget.org/packages/Microsoft.Azure.CognitiveServices.Vision.ComputerVision/7.0.1) | | GitHub [7.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.CognitiveServices.Vision.ComputerVision_6.0.0-preview.1/sdk/cognitiveservices/Vision.ComputerVision) | -| Cosmos DB | NuGet [3.37.1](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.37.1)
NuGet [3.39.0-preview.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.39.0-preview.0) | [docs](https://learn.microsoft.com/dotnet/api/overview/azure/cosmosdb) | GitHub [3.37.1](https://github.com/Azure/azure-cosmos-dotnet-v3/tree/3.12.0/Microsoft.Azure.Cosmos) | +| Cosmos DB | NuGet [3.37.1](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.37.1)
NuGet [3.39.0-preview.1](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.39.0-preview.1) | [docs](https://learn.microsoft.com/dotnet/api/overview/azure/cosmosdb) | GitHub [3.37.1](https://github.com/Azure/azure-cosmos-dotnet-v3/tree/3.12.0/Microsoft.Azure.Cosmos) | | Custom Image Search | NuGet [2.1.0-preview.1](https://www.nuget.org/packages/Microsoft.Azure.CognitiveServices.Search.BingCustomImageSearch/2.1.0-preview.1) | | GitHub [2.1.0-preview.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.CognitiveServices.Search.BingCustomImageSearch_2.1.0-preview.1/sdk/cognitiveservices/Search.BingCustomImageSearch) | | Custom Image Search | NuGet [2.0.0](https://www.nuget.org/packages/Microsoft.Azure.CognitiveServices.Search.CustomImageSearch/2.0.0) | | | | Custom Search | NuGet [2.1.0-preview.1](https://www.nuget.org/packages/Microsoft.Azure.CognitiveServices.Search.BingCustomSearch/2.1.0-preview.1) | | GitHub [2.1.0-preview.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.CognitiveServices.Search.BingCustomSearch_2.1.0-preview.1/sdk/cognitiveservices/Search.BingCustomSearch) | @@ -475,7 +476,7 @@ | Microsoft.Azure.Functions.Worker.Grpc | NuGet [1.16.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Grpc/1.16.0) | | | | Microsoft.Azure.Functions.Worker.ItemTemplates | NuGet [4.0.2945](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.ItemTemplates/4.0.2945) | | | | Microsoft.Azure.Functions.Worker.ProjectTemplates | NuGet [4.0.2945](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.ProjectTemplates/4.0.2945) | | | -| Microsoft.Azure.Functions.Worker.Sdk | NuGet [1.16.4](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Sdk/1.16.4)
NuGet [1.17.0-preview3](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Sdk/1.17.0-preview3) | | | +| Microsoft.Azure.Functions.Worker.Sdk | NuGet [1.17.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Sdk/1.17.0) | | | | Microsoft.Azure.Functions.Worker.Sdk.Analyzers | NuGet [1.2.1](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Sdk.Analyzers/1.2.1) | | | | Microsoft.Azure.Functions.Worker.Sdk.Generators | NuGet [1.2.0](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Sdk.Generators/1.2.0) | | | | Microsoft.Azure.WebJobs.CosmosDb.ChangeProcessor | NuGet [1.0.4](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.CosmosDb.ChangeProcessor/1.0.4) | | | diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md index 1d67d579d5566..fed3f0259983d 100644 --- a/docs/azure/includes/dotnet-new.md +++ b/docs/azure/includes/dotnet-new.md @@ -7,6 +7,7 @@ | Azure AI Search | NuGet [11.5.1](https://www.nuget.org/packages/Azure.Search.Documents/11.5.1)
NuGet [11.6.0-beta.2](https://www.nuget.org/packages/Azure.Search.Documents/11.6.0-beta.2) | [docs](/dotnet/api/overview/azure/Search.Documents-readme) | GitHub [11.5.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Search.Documents_11.5.1/sdk/search/Azure.Search.Documents/)
GitHub [11.6.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Search.Documents_11.6.0-beta.2/sdk/search/Azure.Search.Documents/) | | Azure Object Anchors Conversion | NuGet [0.3.0-beta.6](https://www.nuget.org/packages/Azure.MixedReality.ObjectAnchors.Conversion/0.3.0-beta.6) | [docs](/dotnet/api/overview/azure/MixedReality.ObjectAnchors.Conversion-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [0.3.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.MixedReality.ObjectAnchors.Conversion_0.3.0-beta.6/sdk/objectanchors/Azure.MixedReality.ObjectAnchors.Conversion/) | | Azure Remote Rendering | NuGet [1.1.0](https://www.nuget.org/packages/Azure.MixedReality.RemoteRendering/1.1.0) | [docs](/dotnet/api/overview/azure/MixedReality.RemoteRendering-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.MixedReality.RemoteRendering_1.1.0/sdk/remoterendering/Azure.MixedReality.RemoteRendering/) | +| AzureMonitor OpenTelemetry LiveMetrics | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.LiveMetrics/1.0.0-beta.1) | | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.LiveMetrics_1.0.0-beta.1/sdk/monitor/Azure.Monitor.OpenTelemetry.LiveMetrics/) | | Communication Call Automation | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Communication.CallAutomation/1.1.0) | [docs](/dotnet/api/overview/azure/Communication.CallAutomation-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.CallAutomation_1.1.0/sdk/communication/Azure.Communication.CallAutomation/) | | Communication Chat | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Communication.Chat/1.2.0) | [docs](/dotnet/api/overview/azure/Communication.Chat-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Chat_1.2.0/sdk/communication/Azure.Communication.Chat/) | | Communication Common | NuGet [1.2.1](https://www.nuget.org/packages/Azure.Communication.Common/1.2.1)
NuGet [2.0.0-beta.1](https://www.nuget.org/packages/Azure.Communication.Common/2.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Communication.Common-readme) | GitHub [1.2.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Common_1.2.1/sdk/communication/Azure.Communication.Common/)
GitHub [2.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Common_2.0.0-beta.1/sdk/communication/Azure.Communication.Common/) | @@ -60,7 +61,7 @@ | OpenAI Assistants | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.OpenAI.Assistants/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.OpenAI.Assistants-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI.Assistants_1.0.0-beta.2/sdk/openai/Azure.AI.OpenAI.Assistants/) | | OpenAI Inference | NuGet [1.0.0-beta.13](https://www.nuget.org/packages/Azure.AI.OpenAI/1.0.0-beta.13) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.13](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_1.0.0-beta.13/sdk/openai/Azure.AI.OpenAI/) | | OpenTelemetry AspNetCore | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.AspNetCore/1.1.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.AspNetCore-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.AspNetCore_1.1.0/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/) | -| OpenTelemetry Exporter | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.2.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.Exporter-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.2.0/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/) | +| OpenTelemetry Exporter | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.2.0)
NuGet [1.3.0-beta.1](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.3.0-beta.1) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.Exporter-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.2.0/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/)
GitHub [1.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.3.0-beta.1/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/) | | Personalizer | NuGet [2.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Personalizer/2.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Personalizer-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [2.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Personalizer_2.0.0-beta.2/sdk/personalizer/Azure.AI.Personalizer/) | | Purview Account | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.Purview.Account/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.Purview.Account-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.Purview.Account_1.0.0-beta.1/sdk/purview/Azure.Analytics.Purview.Account/) | | Purview Administration | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.Purview.Administration/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.Purview.Administration-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.Purview.Administration_1.0.0-beta.1/sdk/purview/Azure.Analytics.Purview.Administration/) | @@ -269,7 +270,7 @@ | Resource Management - Service Networking | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.ServiceNetworking/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ServiceNetworking-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceNetworking_1.0.1/sdk/servicenetworking/Azure.ResourceManager.ServiceNetworking/) | | Resource Management - SignalR | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.SignalR/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.SignalR-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SignalR_1.1.0/sdk/signalr/Azure.ResourceManager.SignalR/) | | Resource Management - Sphere | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.Sphere/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.Sphere-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Sphere_1.0.0-beta.2/sdk/sphere/Azure.ResourceManager.Sphere/) | -| Resource Management - SQL | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.Sql/1.2.0)
NuGet [1.3.0-beta.4](https://www.nuget.org/packages/Azure.ResourceManager.Sql/1.3.0-beta.4) | [docs](/dotnet/api/overview/azure/ResourceManager.Sql-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Sql_1.2.0/sdk/sqlmanagement/Azure.ResourceManager.Sql/)
GitHub [1.3.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Sql_1.3.0-beta.4/sdk/sqlmanagement/Azure.ResourceManager.Sql/) | +| Resource Management - SQL | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.Sql/1.2.0)
NuGet [1.3.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.Sql/1.3.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.Sql-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Sql_1.2.0/sdk/sqlmanagement/Azure.ResourceManager.Sql/)
GitHub [1.3.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Sql_1.3.0-beta.5/sdk/sqlmanagement/Azure.ResourceManager.Sql/) | | Resource Management - SQL Virtual Machine | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.SqlVirtualMachine/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.SqlVirtualMachine-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SqlVirtualMachine_1.1.0/sdk/sqlvirtualmachine/Azure.ResourceManager.SqlVirtualMachine/) | | Resource Management - Storage | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.Storage/1.2.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Storage-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Storage_1.2.0/sdk/storage/Azure.ResourceManager.Storage/) | | Resource Management - Storage Cache | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.StorageCache/1.2.0)
NuGet [1.3.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.StorageCache/1.3.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.StorageCache-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageCache_1.2.0/sdk/storagecache/Azure.ResourceManager.StorageCache/)
GitHub [1.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.StorageCache_1.3.0-beta.1/sdk/storagecache/Azure.ResourceManager.StorageCache/) | diff --git a/docs/core/compatibility/8.0.md b/docs/core/compatibility/8.0.md index ea74f7d359571..d2ae194755929 100644 --- a/docs/core/compatibility/8.0.md +++ b/docs/core/compatibility/8.0.md @@ -162,4 +162,4 @@ If you're migrating an app to .NET 8, the breaking changes listed here might aff ## See also -- [What's new in .NET 8](../whats-new/dotnet-8.md) +- [What's new in .NET 8](../whats-new/dotnet-8/overview.md) diff --git a/docs/core/deploying/trimming/incompatibilities.md b/docs/core/deploying/trimming/incompatibilities.md index 34e4ba1aa20b5..fcd1c079771b9 100644 --- a/docs/core/deploying/trimming/incompatibilities.md +++ b/docs/core/deploying/trimming/incompatibilities.md @@ -20,7 +20,7 @@ The following table lists popular reflection-based serializers and their recomme | Serializers | Alternative | | :-- | :---------: | | **Newtonsoft.Json** | [Source generated `System.Text.Json`](../../../standard/serialization/system-text-json/source-generation.md) | -| **System.Configuration.ConfigurationManager** | [Configuration-binding source generator](../../whats-new/dotnet-8.md#configuration-binding-source-generator) | +| **System.Configuration.ConfigurationManager** | [Configuration-binding source generator](../../whats-new/dotnet-8/runtime.md#configuration-binding-source-generator) | | **System.Runtime.Serialization.Formatters.Binary.BinaryFormatter** | [Migrate away from BinaryFormatter serialization due to its security and reliability flaws.](../../compatibility/serialization/7.0/binaryformatter-apis-produce-errors.md#recommended-action) | ## Runtime code generation via JIT diff --git a/docs/core/diagnostics/distributed-tracing-instrumentation-walkthroughs.md b/docs/core/diagnostics/distributed-tracing-instrumentation-walkthroughs.md index c01f8a3abd487..e34faefe00445 100644 --- a/docs/core/diagnostics/distributed-tracing-instrumentation-walkthroughs.md +++ b/docs/core/diagnostics/distributed-tracing-instrumentation-walkthroughs.md @@ -455,3 +455,6 @@ void DoBatchWork(ActivityContext[] requestContexts) Unlike events and Tags that can be added on-demand, links must be added during StartActivity() and are immutable afterwards. + +> [!IMPORTANT] +> According to the [OpenTelemetry specification](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/sdk.md#span-limits), the number of links is capped at 128 by default. diff --git a/docs/core/docker/container-images.md b/docs/core/docker/container-images.md index 5db5fe465d58e..af18266066adb 100644 --- a/docs/core/docker/container-images.md +++ b/docs/core/docker/container-images.md @@ -125,5 +125,5 @@ _.NET Framework image repositories:_ ## See also -- [What's new in .NET 8: Container images](../whats-new/dotnet-8.md#container-images) +- [What's new in .NET 8: Container images](../whats-new/dotnet-8/containers.md#container-images) - [New approach for differentiating .NET 8+ images](https://github.com/dotnet/dotnet-docker/discussions/4821) diff --git a/docs/core/install/includes/linux-install-package-manager-x64-vs-arm-ubuntu.md b/docs/core/install/includes/linux-install-package-manager-x64-vs-arm-ubuntu.md index 4249ebf3f1c94..d1d386d38f82f 100644 --- a/docs/core/install/includes/linux-install-package-manager-x64-vs-arm-ubuntu.md +++ b/docs/core/install/includes/linux-install-package-manager-x64-vs-arm-ubuntu.md @@ -6,7 +6,7 @@ ms.topic: include --- > [!IMPORTANT] -> Using a package manager to install .NET from the **Microsoft pacakge feed** only supports the **x64** architecture. Other architectures, such as **Arm**, aren't supported by the **Microsoft package feed**. Use the Ubuntu feed or manually install .NET. Be cautious of package mix up problems. For more information, see [.NET package mix ups on Linux](../linux-package-mixup.md?pivots=os-linux-ubuntu#whats-going-on). +> Using a package manager to install .NET from the **Microsoft package feed** only supports the **x64** architecture. Other architectures, such as **Arm**, aren't supported by the **Microsoft package feed**. Use the Ubuntu feed or manually install .NET. Be cautious of package mix up problems. For more information, see [.NET package mix ups on Linux](../linux-package-mixup.md?pivots=os-linux-ubuntu#whats-going-on). For more information on installing .NET **without a package manager**, see one of the following articles: diff --git a/docs/core/testing/unit-testing-mstest-runner-extensions.md b/docs/core/testing/unit-testing-mstest-runner-extensions.md index d931908f1ba74..1a84c3a458e74 100644 --- a/docs/core/testing/unit-testing-mstest-runner-extensions.md +++ b/docs/core/testing/unit-testing-mstest-runner-extensions.md @@ -158,6 +158,9 @@ To configure the crash dump file generation, use the following options: | `⁠-⁠-⁠crashdump-⁠filename` | Specifies the file name of the dump. | | `--crashdump-type` | Specifies the type of the dump. Valid values are `Mini`, `Heap`, `Triage`, `Full`. Defaults as `Full`. For more information, see [Types of mini dumps](../diagnostics/collect-dumps-crash.md#types-of-mini-dumps). | +> [!CAUTION] +> The extension isn't compatible with .NET Framework and will be silently ignored. For .NET Framework support, you enable the postmortem debugging with Sysinternals ProcDump. For more information, see [Enabling Postmortem Debugging: Window Sysinternals ProcDump](/windows-hardware/drivers/debugger/enabling-postmortem-debugging#window-sysinternals-procdump). The postmortem debugging solution will also collect process crash information for .NET so you can avoid the use of the extension if you're targeting both .NET and .NET Framework test applications. + ### Hang dump This extension allows you to create a dump file after a given timeout. This extension is shipped as part of [Microsoft.Testing.Extensions.HangDump](https://nuget.org/packages/Microsoft.Testing.Extensions.HangDump) package. diff --git a/docs/core/tools/dotnet-new-sdk-templates.md b/docs/core/tools/dotnet-new-sdk-templates.md index a063ae7f6b043..4f1eb44e0262c 100644 --- a/docs/core/tools/dotnet-new-sdk-templates.md +++ b/docs/core/tools/dotnet-new-sdk-templates.md @@ -257,7 +257,7 @@ The ability to create a project for an earlier TFM depends on having that versio - `None` - No authentication (Default). - `Individual` - Individual authentication. - `IndividualB2C` - Individual authentication with Azure AD B2C. - - `SingleOrg` - Organizational authentication for a single tenant. + - `SingleOrg` - Organizational authentication for a single tenant. [Entra External ID](/entra/external-id/) tenants also use `SingleOrg`. - `MultiOrg` - Organizational authentication for multiple tenants. - `Windows` - Windows authentication. @@ -418,7 +418,7 @@ The ability to create a project for an earlier TFM depends on having that versio - `None` - No authentication (Default). - `Individual` - Individual authentication. - `IndividualB2C` - Individual authentication with Azure AD B2C. - - `SingleOrg` - Organizational authentication for a single tenant. + - `SingleOrg` - Organizational authentication for a single tenant. Entra External ID tenants also use SingleOrg. - **`--authority `** @@ -561,7 +561,7 @@ The ability to create a project for an earlier TFM depends on having that versio - `None` - No authentication (Default). - `Individual` - Individual authentication. - `IndividualB2C` - Individual authentication with Azure AD B2C. - - `SingleOrg` - Organizational authentication for a single tenant. + - `SingleOrg` - Organizational authentication for a single tenant. Entra External ID tenants also use SingleOrg. - `MultiOrg` - Organizational authentication for multiple tenants. - `Windows` - Windows authentication. @@ -769,7 +769,7 @@ Creates a web API project with AOT publish enabled. For more information, see [N - `None` - No authentication (Default). - `IndividualB2C` - Individual authentication with Azure AD B2C. - - `SingleOrg` - Organizational authentication for a single tenant. + - `SingleOrg` - Organizational authentication for a single tenant. Entra External ID tenants also use SingleOrg. - `Windows` - Windows authentication. - **`--aad-b2c-instance `** diff --git a/docs/core/tools/dotnet-new-update.md b/docs/core/tools/dotnet-new-update.md index a322160a12a75..d8643a41eb51a 100644 --- a/docs/core/tools/dotnet-new-update.md +++ b/docs/core/tools/dotnet-new-update.md @@ -54,6 +54,10 @@ The `dotnet new update` command with `--check-only` option checks for available By default, `dotnet new install` uses the hierarchy of NuGet configuration files from the current directory to determine the NuGet source the package can be installed from. If `--nuget-source` is specified, the source will be added to the list of sources to be checked. To check the configured sources for the current directory use [`dotnet nuget list source`](dotnet-nuget-list-source.md). For more information, see [Common NuGet Configurations](/nuget/consume-packages/configuring-nuget-behavior). Available since .NET SDK 7.0.100. +- **`--check-only|--dry-run`** + + Only checks for updates and displays the template packages to be updated, without applying any updates. + - **`-d|--diagnostics`** Enables diagnostic output. Available since .NET SDK 7.0.100. diff --git a/docs/core/whats-new/dotnet-8/containers.md b/docs/core/whats-new/dotnet-8/containers.md new file mode 100644 index 0000000000000..a977ba6deec29 --- /dev/null +++ b/docs/core/whats-new/dotnet-8/containers.md @@ -0,0 +1,116 @@ +--- +title: What's new in containers for .NET 8 +description: Learn about the new containers features introduced in .NET 8. +titleSuffix: "" +ms.date: 11/14/2023 +ms.topic: overview +ms.author: gewarren +author: gewarren +--- +# What's new in containers for .NET 8 + +This article describes new features in containers for .NET 8. + +## Container images + +The following changes have been made to .NET container images for .NET 8: + +- [Generated-image defaults](#generated-image-defaults) +- [Debian 12](#debian-12) +- [Non-root user](#non-root-user) +- [Chiseled Ubuntu images](#chiseled-ubuntu-images) +- [Build multi-platform container images](#build-multi-platform-container-images) +- [ASP.NET composite images](#aspnet-composite-images) + +### Generated-image defaults + +The new [`non-root` capability](#non-root-user) of the Microsoft .NET containers is now the default, which helps your apps stay secure-by-default. Change this default at any time by setting your own `ContainerUser`. + +The default container tag is now `latest`. This default is in line with other tooling in the containers space and makes containers easier to use in inner development loops. + +### Debian 12 + +The container images now use [Debian 12 (Bookworm)](https://wiki.debian.org/DebianBookworm). Debian is the default Linux distro in the .NET container images. + +### Non-root user + +Images include a `non-root` user. This user makes the images `non-root` capable. To run as `non-root`, add the following line at the end of your Dockerfile (or a similar instruction in your Kubernetes manifests): + +```dockerfile +USER app +``` + +.NET 8 adds an environment variable for the UID for the `non-root` user, which is 64198. This environment variable is useful for the Kubernetes `runAsNonRoot` test, which requires that the container user be set via UID and not by name. This [dockerfile](https://github.com/dotnet/dotnet-docker/blob/e5bc76bca49a1bbf9c11e74a590cf6a9fe9dbf2a/samples/aspnetapp/Dockerfile.alpine-non-root#L27) shows an example usage. + +The default port also changed from port `80` to `8080`. To support this change, a new environment variable `ASPNETCORE_HTTP_PORTS` is available to make it easier to change ports. The variable accepts a list of ports, which is simpler than the format required by `ASPNETCORE_URLS`. If you change the port back to port `80` using one of these variables, you can't run as `non-root`. + +### Chiseled Ubuntu images + +[Chiseled Ubuntu images](https://hub.docker.com/r/ubuntu/dotnet-deps) are available for .NET 8. Chiseled images have a reduced attacked surface because they're ultra-small, have no package manager or shell, and are `non-root`. This type of image is for developers who want the benefit of appliance-style computing. Chiseled images are published to the [.NET nightly artifact registry](https://mcr.microsoft.com/product/dotnet/nightly/aspnet/tags). + +### Build multi-platform container images + +Docker supports using and building [multi-platform images](https://docs.docker.com/build/building/multi-platform/) that work across multiple environments. .NET 8 introduces a new pattern that enables you to mix and match architectures with the .NET images you build. As an example, if you're using macOS and want to target an x64 cloud service in Azure, you can build the image by using the `--platform` switch as follows: + +`docker build --pull -t app --platform linux/amd64` + +The .NET SDK now supports `$TARGETARCH` values and the `-a` argument on restore. The following code snippet shows an example: + +```dockerfile +RUN dotnet restore -a $TARGETARCH + +# Copy everything else and build app. +COPY aspnetapp/. . +RUN dotnet publish -a $TARGETARCH --self-contained false --no-restore -o /app +``` + +For more information, see the [Improving multi-platform container support](https://devblogs.microsoft.com/dotnet/improving-multiplatform-container-support/) blog post. + +### ASP.NET composite images + +As part of an effort to improve containerization performance, new ASP.NET Docker images are available that have a composite version of the runtime. This composite is built by compiling multiple MSIL assemblies into a single ready-to-run (R2R) output binary. Because these assemblies are embedded into a single image, jitting takes less time, and the startup performance of apps improves. The other big advantage of the composite over the regular ASP.NET image is that the composite images have a smaller size on disk. + +There is a caveat to be aware of. Since composites have multiple assemblies embedded into one, they have tighter version coupling. Apps can't use custom versions of framework or ASP.NET binaries. + +Composite images are available for the Alpine Linux, Jammy Chiseled, and Mariner Distroless platforms from the `mcr.microsoft.com/dotnet/nightly/aspnet` repo. The tags are listed with the `-composite` suffix on the [ASP.NET Docker page](https://hub.docker.com/_/microsoft-dotnet-nightly-aspnet). + +## Container publishing + +- [Performance and compatibility](#performance-and-compatibility) +- [Authentication](#authentication) +- [Publish to tar.gz archive](#publish-to-targz-archive) + +### Performance and compatibility + +.NET 8 has improved performance for pushing containers to remote registries, especially Azure registries. Speedup comes from pushing layers in one operation and, for registries that don't support atomic uploads, a more reliable chunking mechanism. + +These improvements also mean that more registries are supported: Harbor, Artifactory, Quay.io, and Podman. + +### Authentication + +.NET 8 adds support for OAuth token exchange authentication (Azure Managed Identity) when pushing containers to registries. This support means that you can now push to registries like Azure Container Registry without any authentication errors. The following commands show an example publishing flow: + +```console +> az acr login -n +> dotnet publish -r linux-x64 -p PublishProfile=DefaultContainer +``` + +For more information containerizing .NET apps, see [Containerize a .NET app with dotnet publish](../../docker/publish-as-container.md). + +### Publish to tar.gz archive + +Starting in .NET 8, you can create a container directly as a *tar.gz* archive. This feature is useful if your workflow isn't straightforward and requires that you, for example, run a scanning tool over your images before pushing them. Once the archive is created, you can move it, scan it, or load it into a local Docker toolchain. + +To publish to an archive, add the `ContainerArchiveOutputPath` property to your `dotnet publish` command, for example: + +```dotnetcli +dotnet publish \ + -p PublishProfile=DefaultContainer \ + -p ContainerArchiveOutputPath=./images/sdk-container-demo.tar.gz +``` + +You can specify either a folder name or a path with a specific file name. + +## See also + +- [What's new in .NET 8](overview.md) diff --git a/docs/core/whats-new/dotnet-8/overview.md b/docs/core/whats-new/dotnet-8/overview.md new file mode 100644 index 0000000000000..db63b014adfc2 --- /dev/null +++ b/docs/core/whats-new/dotnet-8/overview.md @@ -0,0 +1,78 @@ +--- +title: What's new in .NET 8 +description: Learn about the new .NET features introduced in .NET 8. +titleSuffix: "" +ms.date: 11/14/2023 +ms.topic: overview +ms.author: gewarren +author: gewarren +--- +# What's new in .NET 8 + +.NET 8 is the successor to [.NET 7](../dotnet-7.md). It will be [supported for three years](https://dotnet.microsoft.com/platform/support/policy/dotnet-core) as a long-term support (LTS) release. You can [download .NET 8 here](https://dotnet.microsoft.com/download/dotnet). + +## .NET runtime + +The .NET 8 runtime includes improvements to performance, garbage collection, and the core and extension libraries. It also includes a new globalization mode for mobile apps and new source generators for COM interop and configuration binding. For more information, see [What's new in the .NET 8 runtime](runtime.md). + +## .NET SDK + +For information about what's new in the .NET SDK, Native AOT, code analysis, and diagnostics, see [What's new in the SDK and tooling for .NET 8](sdk.md). + +## C# 12 + +C# 12 shipped with the .NET 8 SDK. For more information, see [What's new in C# 12](../../../csharp/whats-new/csharp-12.md). + +## .NET Aspire + +.NET Aspire is an opinionated, cloud-ready stack for building observable, production ready, distributed applications.​ .NET Aspire is delivered through a collection of NuGet packages that handle specific cloud-native concerns, and is available in preview for .NET 8. For more information, see [.NET Aspire (Preview)](/dotnet/aspire). + +## ASP.NET Core + +ASP.NET Core includes improvements to Blazor, SignalR, minimal APIs, Native AOT, Kestrel and HTTP.sys servers, and authentication and authorization. For more information, see [What's new in ASP.NET Core 8.0](/aspnet/core/release-notes/aspnetcore-8.0). + +## .NET MAUI + +.NET MAUI includes new functionality for controls, gesture recognizers, Windows apps, navigation, and platform integration. It also includes some behavior changes and many performance enhancements. For more information, see [What's new in .NET MAUI for .NET 8](/dotnet/maui/whats-new/dotnet-8). + +## EF Core + +Entity Framework Core includes improvements to complex type objects, collections of primitive types, JSON column mapping, raw SQL queries, lazy loading, tracked-entity access, model building, math translations, and other features. It also includes a new `HierarchyId` type. For more information, see [What's New in EF Core 8](/ef/core/what-is-new/ef-core-8.0/whatsnew). + +## Windows Forms + +Windows Forms includes improvements to data binding, Visual Studio DPI, and high DPI. Button commands are also fully enabled now. For more information, see [What's new for .NET 8 (Windows Forms)](/dotnet/desktop/winforms/whats-new/net80). + +## Windows Presentation Foundation + +Windows Presentation Foundation (WPF) adds the ability to use hardware acceleration and a new control. For more information, see [What's new in WPF for .NET 8](/dotnet/desktop/wpf/whats-new/net80). + +## See also + +- [Breaking changes in .NET 8](../../compatibility/8.0.md) + +### .NET preview announcements + +- [Announcing .NET 8](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8/) +- [Announcing .NET 8 RC 2](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc2/) +- [Announcing .NET 8 RC 1](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc1/) +- [Announcing .NET 8 Preview 7](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-7/) +- [Announcing .NET 8 Preview 6](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-6/) +- [Announcing .NET 8 Preview 5](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-5/) +- [Announcing .NET 8 Preview 4](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-4/) +- [Announcing .NET 8 Preview 3](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-3/) +- [Announcing .NET 8 Preview 2](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-2/) +- [Announcing .NET 8 Preview 1](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-1/) + +### ASP.NET Core preview announcements + +- [ASP.NET Core in .NET 8](https://devblogs.microsoft.com/dotnet/announcing-asp-net-core-in-dotnet-8) +- [ASP.NET Core updates in .NET 8 RC 2](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-rc-2/) +- [ASP.NET Core updates in .NET 8 RC 1](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-rc-1/) +- [ASP.NET Core updates in .NET 8 Preview 7](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-7/) +- [ASP.NET Core updates in .NET 8 Preview 6](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-6/) +- [ASP.NET Core updates in .NET 8 Preview 5](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-5/) +- [ASP.NET Core updates in .NET 8 Preview 4](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-4/) +- [ASP.NET Core updates in .NET 8 Preview 3](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-3/) +- [ASP.NET Core updates in .NET 8 Preview 2](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-2/) +- [ASP.NET Core updates in .NET 8 Preview 1](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-1/) diff --git a/docs/core/whats-new/dotnet-8.md b/docs/core/whats-new/dotnet-8/runtime.md similarity index 56% rename from docs/core/whats-new/dotnet-8.md rename to docs/core/whats-new/dotnet-8/runtime.md index 01aa8843553c1..ed83335611b3d 100644 --- a/docs/core/whats-new/dotnet-8.md +++ b/docs/core/whats-new/dotnet-8/runtime.md @@ -1,28 +1,138 @@ --- -title: What's new in .NET 8 -description: Learn about the new .NET features introduced in .NET 8. +title: What's new in .NET 8 runtime +description: Learn about the new .NET features introduced in the .NET 8 runtime. titleSuffix: "" ms.date: 11/14/2023 ms.topic: overview ms.author: gewarren author: gewarren --- -# What's new in .NET 8 +# What's new in the .NET 8 runtime -.NET 8 is the successor to [.NET 7](dotnet-7.md). It will be [supported for three years](https://dotnet.microsoft.com/platform/support/policy/dotnet-core) as a long-term support (LTS) release. You can [download .NET 8 here](https://dotnet.microsoft.com/download/dotnet). +This article describes new features in the .NET runtime for .NET 8. -## .NET Aspire +## Performance improvements + +.NET 8 includes improvements to code generation and just-in time (JIT) compilation: + +- Arm64 performance improvements +- SIMD improvements +- Support for AVX-512 ISA extensions (see [Vector512 and AVX-512](#vector512-and-avx-512)) +- Cloud-native improvements +- JIT throughput improvements +- Loop and general optimizations +- Optimized access for fields marked with +- Consecutive register allocation. Arm64 has two instructions for table vector lookup, which require that all entities in their tuple operands are present in consecutive registers. +- JIT/NativeAOT can now unroll and auto-vectorize some memory operations with SIMD, such as comparison, copying, and zeroing, if it can determine their sizes at compile time. + +In addition, dynamic profile-guided optimization (PGO) has been improved and is now enabled by default. You no longer need to use a [runtime configuration option](../../runtime-config/compilation.md#profile-guided-optimization) to enable it. Dynamic PGO works hand-in-hand with tiered compilation to further optimize code based on additional instrumentation that's put in place during tier 0. -.NET Aspire is an opinionated, cloud ready stack for building observable, production ready, distributed applications.​ .NET Aspire is delivered through a collection of NuGet packages that handle specific cloud-native concerns, and is available in preview for .NET 8. For more information, see [.NET Aspire (Preview)](/dotnet/aspire). +On average, dynamic PGO increases performance by about 15%. In a benchmark suite of ~4600 tests, 23% saw performance improvements of 20% or more. + +### Codegen struct promotion + +.NET 8 includes a new physical promotion optimization pass for codegen that generalizes the JIT's ability to promote struct variables. This optimization (also called *scalar replacement of aggregates*) replaces the fields of struct variables by primitive variables that the JIT is then able to reason about and optimize more precisely. + +The JIT already supported this optimization but with several large limitations including: -## ASP.NET Core +- It was only supported for structs with four or fewer fields. +- It was only supported if each field was a primitive type, or a simple struct wrapping a primitive type. + +Physical promotion removes these limitations, which fixes a number of long-standing JIT issues. -For information about what's new in ASP.NET Core, see [What's new in ASP.NET Core 8.0](/aspnet/core/release-notes/aspnetcore-8.0). +## Garbage collection + +.NET 8 adds a capability to adjust the memory limit on the fly. This is useful in cloud-service scenarios, where demand comes and goes. To be cost-effective, services should scale up and down on resource consumption as the demand fluctuates. When a service detects a decrease in demand, it can scale down resource consumption by reducing its memory limit. Previously, this would fail because the garbage collector (GC) was unaware of the change and might allocate more memory than the new limit. With this change, you can call the API to update the GC with the new memory limit. + +There are some limitations to be aware of: + +- On 32-bit platforms (for example, Windows x86 and Linux ARM), .NET is unable to establish a new heap hard limit if there isn't already one. +- The API might return a non-zero status code indicating the refresh failed. This can happen if the scale-down is too aggressive and leaves no room for the GC to maneuver. In this case, consider calling `GC.Collect(2, GCCollectionMode.Aggressive)` to shrink the current memory usage, and then try again. +- If you scale up the memory limit beyond the size that the GC believes the process can handle during startup, the `RefreshMemoryLimit` call will succeed, but it won't be able to use more memory than what it perceives as the limit. + +The following code snippet shows how to call the API. + +```csharp +GC.RefreshMemoryLimit(); +``` + +You can also refresh some of the GC configuration settings related to the memory limit. The following code snippet sets the heap hard limit to 100 mebibytes (MiB): + +```csharp +AppContext.SetData("GCHeapHardLimit", (ulong)100 * 1_024 * 1_024); +GC.RefreshMemoryLimit(); +``` + +The API can throw an if the hard limit is invalid, for example, in the case of negative heap hard limit percentages and if the hard limit is too low. This can happen if the heap hard limit that the refresh will set, either because of new AppData settings or implied by the container memory limit changes, is lower than what's already committed. + +## Globalization for mobile apps + +Mobile apps on iOS, tvOS, and MacCatalyst can opt into a new *hybrid* globalization mode that uses a lighter ICU bundle. In hybrid mode, globalization data is partially pulled from the ICU bundle and partially from calls into Native APIs. Hybrid mode serves all the [locales supported by mobile](https://github.com/dotnet/icu/blob/dotnet/main/icu-filters/icudt_mobile.json). + +Hybrid mode is most suitable for apps that can't work in invariant globalization mode and that use cultures that were trimmed from ICU data on mobile. You can also use it when you want to load a smaller ICU data file. (The *icudt_hybrid.dat* file is 34.5 % smaller than the default ICU data file *icudt.dat*.) + +To use hybrid globalization mode, set the `HybridGlobalization` MSBuild property to true: + +```xml + + true + +``` + +There are some limitations to be aware of: + +- Due to limitations of Native API, not all globalization APIs are supported in hybrid mode. +- Some of the supported APIs have different behavior. + +To check if your application is affected, see [Behavioral differences](https://github.com/dotnet/runtime/blob/main/docs/design/features/globalization-hybrid-mode.md#behavioral-differences). + +## Source-generated COM interop + +.NET 8 includes a new source generator that supports interoperating with COM interfaces. You can use the to mark an interface as a COM interface for the source generator. The source generator will then generate code to enable calling from C# code to unmanaged code. It also generates code to enable calling from unmanaged code into C#. This source generator integrates with , and you can use types with the as parameters and return types in `LibraryImport`-attributed methods. + +:::code language="csharp" source="../snippets/dotnet-8/csharp/ConsoleApp/Interop.cs"::: + +The source generator also supports the new attribute to enable you to pass types that implement interfaces with the attribute to unmanaged code. The source generator will generate the code necessary to expose a COM object that implements the interfaces and forwards calls to the managed implementation. + +Methods on interfaces with the attribute support all the same types as `LibraryImportAttribute`, and `LibraryImportAttribute` now supports `GeneratedComInterface`-attributed types and `GeneratedComClass`-attributed types. + +If your C# code only uses a `GeneratedComInterface`-attributed interface to either wrap a COM object from unmanaged code or wrap a managed object from C# to expose to unmanaged code, you can use the options in the property to customize which code will be generated. These options mean you don't need to write marshallers for scenarios that you know won't be used. + +The source generator uses the new type to create and manage the COM object wrappers and the managed object wrappers. This new type handles providing the expected .NET user experience for COM interop, while providing customization points for advanced users. If your application has its own mechanism for defining types from COM or if you need to support scenarios that source-generated COM doesn't currently support, consider using the new type to add the missing features for your scenario and get the same .NET user experience for your COM types. + +If you're using Visual Studio, new analyzers and code fixes make it easy to convert your existing COM interop code to use source-generated interop. Next to each interface that has the , a lightbulb offers an option to convert to source-generated interop. The fix changes the interface to use the attribute. And next to every class that implements an interface with `GeneratedComInterfaceAttribute`, a lightbulb offers an option to add the attribute to the type. Once your types are converted, you can move your `DllImport` methods to use `LibraryImportAttribute`. + +### Limitations + +The COM source generator doesn't support apartment affinity, using the `new` keyword to activate a COM CoClass, and the following APIs: + +- -based interfaces. +- -based interfaces. +- COM properties and events. + +## Configuration-binding source generator + +.NET 8 introduces a source generator to provide AOT and trim-friendly [configuration](/aspnet/core/fundamentals/configuration/) in ASP.NET Core. The generator is an alternative to the pre-existing reflection-based implementation. + +The source generator probes for , , and calls to retrieve type info from. When the generator is enabled in a project, the compiler implicitly chooses generated methods over the pre-existing reflection-based framework implementations. + +No source code changes are needed to use the generator. It's enabled by default in AOT'd web apps. For other project types, the source generator is off by default, but you can opt in by setting the `EnableConfigurationBindingGenerator` property to `true` in your project file: + +```xml + + true + +``` + +The following code shows an example of invoking the binder. + +:::code language="csharp" source="../snippets/dotnet-8/csharp/WebSDK/ConfigBindingSG.cs"::: ## Core .NET libraries This section contains the following subtopics: +- [Reflection](#reflection) - [Serialization](#serialization) - [Time abstraction](#time-abstraction) - [UTF8 improvements](#utf8-improvements) @@ -35,9 +145,34 @@ This section contains the following subtopics: - [Networking](#networking) - [Stream-based ZipFile methods](#stream-based-zipfile-methods) +### Reflection + +[Function pointers](../../../csharp/language-reference/unsafe-code.md#function-pointers) were introduced in .NET 5, however, the corresponding support for reflection wasn't added at that time. When using `typeof` or reflection on a function pointer, for example, `typeof(delegate*())` or `FieldInfo.FieldType` respectively, an was returned. Starting in .NET 8, a object is returned instead. This type provides access to function pointer metadata, including the calling conventions, return type, and parameters. + +> [!NOTE] +> A function pointer instance, which is a physical address to a function, continues to be represented as an . Only the reflection type has changed. + +The new functionality is currently implemented only in the CoreCLR runtime and . + +New APIs have been added to , such as , and to , , and . The following code shows how to use some of the new APIs for reflection. + +:::code language="csharp" source="../snippets/dotnet-8/csharp/ConsoleApp/FunctionPointerReflection.cs"::: + +The previous example produces the following output: + +```Output +IsFunctionPointer: True +IsUnmanagedFunctionPointer: True +Return type: System.Void +Parameter type: System.Int32& +Calling convention: System.Runtime.CompilerServices.CallConvSuppressGCTransition +Calling convention: System.Runtime.CompilerServices.CallConvCdecl +Required modifier for first parameter: System.Runtime.InteropServices.InAttribute +``` + ### Serialization -Many improvements have been made to serialization and deserialization functionality in .NET 8. For example, you can [customize handling of members that aren't in the JSON payload](../../standard/serialization/system-text-json/missing-members.md). +Many improvements have been made to serialization and deserialization functionality in .NET 8. For example, you can [customize handling of members that aren't in the JSON payload](../../../standard/serialization/system-text-json/missing-members.md). The following sections describe other serialization improvements: @@ -54,7 +189,7 @@ The following sections describe other serialization improvements: - [New JsonContent.Create overloads](#new-jsoncontentcreate-overloads) - [Freeze a JsonSerializerOptions instance](#freeze-a-jsonserializeroptions-instance) -For more information about JSON serialization in general, see [JSON serialization and deserialization in .NET](../../standard/serialization/system-text-json/overview.md). +For more information about JSON serialization in general, see [JSON serialization and deserialization in .NET](../../../standard/serialization/system-text-json/overview.md). #### Built-in support for additional types @@ -78,12 +213,12 @@ The serializer has built-in support for the following additional types. #### Source generator -.NET 8 includes enhancements of the System.Text.Json [source generator](../../standard/serialization/system-text-json/source-generation.md) that are aimed at making the [Native AOT](../../standard/glossary.md#native-aot) experience on par with the [reflection-based serializer](../../standard/serialization/system-text-json/reflection-vs-source-generation.md#reflection). For example: +.NET 8 includes enhancements of the System.Text.Json [source generator](../../../standard/serialization/system-text-json/source-generation.md) that are aimed at making the [Native AOT](../../../standard/glossary.md#native-aot) experience on par with the [reflection-based serializer](../../../standard/serialization/system-text-json/reflection-vs-source-generation.md#reflection). For example: -- The source generator now supports serializing types with [`required`](../../standard/serialization/system-text-json/required-properties.md) and [`init`](../../csharp/language-reference/keywords/init.md) properties. These were both already supported in reflection-based serialization. +- The source generator now supports serializing types with [`required`](../../../standard/serialization/system-text-json/required-properties.md) and [`init`](../../../csharp/language-reference/keywords/init.md) properties. These were both already supported in reflection-based serialization. - Improved formatting of source-generated code. -- feature parity with . For more information, see [Specify options (source generation)](../../standard/serialization/system-text-json/source-generation.md#specify-options). -- Additional diagnostics (such as [SYSLIB1034](../../fundamentals/syslib-diagnostics/syslib1034.md) and [SYSLIB1039](../../fundamentals/syslib-diagnostics/syslib1039.md)). +- feature parity with . For more information, see [Specify options (source generation)](../../../standard/serialization/system-text-json/source-generation.md#specify-options). +- Additional diagnostics (such as [SYSLIB1034](../../../fundamentals/syslib-diagnostics/syslib1034.md) and [SYSLIB1039](../../../fundamentals/syslib-diagnostics/syslib1039.md)). - Don't include types of ignored or inaccessible properties. - Support for nesting `JsonSerializerContext` declarations within arbitrary type kinds. - Support for compiler-generated or *unspeakable* types in weakly typed source generation scenarios. Since compiler-generated types can't be explicitly specified by the source generator, now performs nearest-ancestor resolution at run time. This resolution determines the most appropriate supertype with which to serialize the value. @@ -97,7 +232,7 @@ The serializer has built-in support for the following additional types. public partial class MyContext : JsonSerializerContext { } ``` - For more information, see [Serialize enum fields as strings](../../standard/serialization/system-text-json/source-generation.md#serialize-enum-fields-as-strings). + For more information, see [Serialize enum fields as strings](../../../standard/serialization/system-text-json/source-generation.md#serialize-enum-fields-as-strings). - New `JsonConverter.Type` property lets you look up the type of a non-generic `JsonConverter` instance: @@ -111,9 +246,9 @@ The serializer has built-in support for the following additional types. ##### Chain source generators -The class includes a new property that complements the existing property. These properties are used in contract customization for chaining source generators. The addition of the new property means that you don't have to specify all chained components at one call site—they can be added after the fact. also lets you introspect the chain or remove components from it. For more information, see [Combine source generators](../../standard/serialization/system-text-json/source-generation.md#combine-source-generators). +The class includes a new property that complements the existing property. These properties are used in contract customization for chaining source generators. The addition of the new property means that you don't have to specify all chained components at one call site—they can be added after the fact. also lets you introspect the chain or remove components from it. For more information, see [Combine source generators](../../../standard/serialization/system-text-json/source-generation.md#combine-source-generators). -In addition, is now obsolete. It's been superseded by the and properties. For more information, see [SYSLIB0049](../../fundamentals/syslib-diagnostics/syslib0049.md). +In addition, is now obsolete. It's been superseded by the and properties. For more information, see [SYSLIB0049](../../../fundamentals/syslib-diagnostics/syslib0049.md). #### Interface hierarchies @@ -121,7 +256,7 @@ In addition, API to check the value of the feature switch. If you're a library author building on top of , you can rely on the property to configure your defaults without accidentally rooting reflection components. -For more information, see [Disable reflection defaults](../../standard/serialization/system-text-json/source-generation.md#disable-reflection-defaults). +For more information, see [Disable reflection defaults](../../../standard/serialization/system-text-json/source-generation.md#disable-reflection-defaults). #### New JsonNode API methods @@ -220,9 +355,9 @@ public partial class JsonArray You can opt non-public members into the serialization contract for a given type using and attribute annotations. -:::code language="csharp" source="./snippets/dotnet-8/csharp/ConsoleApp/Serialization.cs" id="NonPublicMembers"::: +:::code language="csharp" source="../snippets/dotnet-8/csharp/ConsoleApp/Serialization.cs" id="NonPublicMembers"::: -For more information, see [Use immutable types and non-public members and accessors](../../standard/serialization/system-text-json/immutability.md). +For more information, see [Use immutable types and non-public members and accessors](../../../standard/serialization/system-text-json/immutability.md). #### Streaming deserialization APIs @@ -230,7 +365,7 @@ For more information, see [Use immutable types and non-public members and access The following code shows how you might use the new extension methods. -:::code language="csharp" source="./snippets/dotnet-8/csharp/ConsoleApp/Serialization.cs" id="StreamingDeserialization"::: +:::code language="csharp" source="../snippets/dotnet-8/csharp/ConsoleApp/Serialization.cs" id="StreamingDeserialization"::: #### WithAddedModifier extension method @@ -293,14 +428,14 @@ The new class and inte The following code snippet shows some usage examples. -:::code language="csharp" source="./snippets/dotnet-8/csharp/ConsoleApp/TimeProvider.cs" id="GetElapsedTime"::: -:::code language="csharp" source="./snippets/dotnet-8/csharp/ConsoleApp/TimeProvider.cs" id="TimeProvider"::: +:::code language="csharp" source="../snippets/dotnet-8/csharp/ConsoleApp/TimeProvider.cs" id="GetElapsedTime"::: +:::code language="csharp" source="../snippets/dotnet-8/csharp/ConsoleApp/TimeProvider.cs" id="TimeProvider"::: ### UTF8 improvements If you want to enable writing out a string-like representation of your type to a destination span, implement the new interface on your type. This new interface is closely related to , but targets UTF8 and `Span` instead of UTF16 and `Span`. - has been implemented on all of the primitive types (plus others), with the exact same shared logic whether targeting `string`, `Span`, or `Span`. It has full support for all formats (including the new ["B" binary specifier](../../standard/base-types/standard-numeric-format-strings.md#binary-format-specifier-b)) and all cultures. This means you can now format directly to UTF8 from `Byte`, `Complex`, `Char`, `DateOnly`, `DateTime`, `DateTimeOffset`, `Decimal`, `Double`, `Guid`, `Half`, `IPAddress`, `IPNetwork`, `Int16`, `Int32`, `Int64`, `Int128`, `IntPtr`, `NFloat`, `SByte`, `Single`, `Rune`, `TimeOnly`, `TimeSpan`, `UInt16`, `UInt32`, `UInt64`, `UInt128`, `UIntPtr`, and `Version`. + has been implemented on all of the primitive types (plus others), with the exact same shared logic whether targeting `string`, `Span`, or `Span`. It has full support for all formats (including the new ["B" binary specifier](../../../standard/base-types/standard-numeric-format-strings.md#binary-format-specifier-b)) and all cultures. This means you can now format directly to UTF8 from `Byte`, `Complex`, `Char`, `DateOnly`, `DateTime`, `DateTimeOffset`, `Decimal`, `Double`, `Guid`, `Half`, `IPAddress`, `IPNetwork`, `Int16`, `Int32`, `Int64`, `Int128`, `IntPtr`, `NFloat`, `SByte`, `Single`, `Rune`, `TimeOnly`, `TimeSpan`, `UInt16`, `UInt32`, `UInt64`, `UInt128`, `UIntPtr`, and `Version`. New methods provide a UTF8-based counterpart to the existing methods, which are UTF16-based. You can use interpolated string syntax to format a complex expression directly into a span of UTF8 bytes, for example: @@ -428,7 +563,7 @@ Even if you don't explicitly use `Vector512`-specific or `Avx512F`-specific inst ### Data validation -The namespace includes new data validation attributes intended for validation scenarios in cloud-native services. While the pre-existing `DataAnnotations` validators are geared towards typical UI data-entry validation, such as fields on a form, the new attributes are designed to validate non-user-entry data, such as [configuration options](../extensions/options.md#options-validation). In addition to the new attributes, new properties were added to the and types. +The namespace includes new data validation attributes intended for validation scenarios in cloud-native services. While the pre-existing `DataAnnotations` validators are geared towards typical UI data-entry validation, such as fields on a form, the new attributes are designed to validate non-user-entry data, such as [configuration options](../../extensions/options.md#options-validation). In addition to the new attributes, new properties were added to the and types. | New API | Description | |--|--| @@ -441,7 +576,7 @@ The namesp New APIs let you attach key-value pair tags to and objects when you create them. Aggregators of published metric measurements can use the tags to differentiate the aggregated values. -:::code language="csharp" source="./snippets/dotnet-8/csharp/ConsoleApp/Metrics.cs" id="MetricsTags"::: +:::code language="csharp" source="../snippets/dotnet-8/csharp/ConsoleApp/Metrics.cs" id="MetricsTags"::: The new APIs include: @@ -557,7 +692,7 @@ Keyed dependency injection (DI) services provide a means for registering and ret The following example shows you how to use keyed DI services. -:::code language="csharp" source="./snippets/dotnet-8/csharp/WebSDK/KeyedDIServices.cs"::: +:::code language="csharp" source="../snippets/dotnet-8/csharp/WebSDK/KeyedDIServices.cs"::: For more information, see [dotnet/runtime#64427](https://github.com/dotnet/runtime/issues/64427). @@ -574,7 +709,7 @@ These methods run before and after the existing points respectively. The following example shows how to use the new APIs. -:::code language="csharp" source="./snippets/dotnet-8/csharp/ConsoleApp/HostedLifecycleServices.cs"::: +:::code language="csharp" source="../snippets/dotnet-8/csharp/ConsoleApp/HostedLifecycleServices.cs"::: For more information, see [dotnet/runtime#86511](https://github.com/dotnet/runtime/issues/86511). @@ -584,11 +719,11 @@ For more information, see [dotnet/runtime#86511](https://github.com/dotnet/runti To reduce startup overhead and improve the validation feature set, we've introduced a source-code generator that implements the validation logic. The following code shows example models and validator classes. -:::code language="csharp" source="./snippets/dotnet-8/csharp/WebSDK/Validation.cs" id="ValidatorClasses"::: +:::code language="csharp" source="../snippets/dotnet-8/csharp/WebSDK/Validation.cs" id="ValidatorClasses"::: If your app uses dependency injection, you can inject the validation as shown in the following example code. -:::code language="csharp" source="./snippets/dotnet-8/csharp/WebSDK/Validation.cs" id="InjectValidation"::: +:::code language="csharp" source="../snippets/dotnet-8/csharp/WebSDK/Validation.cs" id="InjectValidation"::: #### ValidateOptionsResultBuilder type @@ -596,7 +731,7 @@ If your app uses dependency injection, you can inject the validation as shown in The following code snippet shows an example usage of . -:::code language="csharp" source="./snippets/dotnet-8/csharp/WebSDK/ResultBuilder.cs" id="BuildResults"::: +:::code language="csharp" source="../snippets/dotnet-8/csharp/WebSDK/ResultBuilder.cs" id="BuildResults"::: ### LoggerMessageAttribute constructors @@ -638,7 +773,7 @@ Meter meter = meterFactory.Create(options); The new class lets you record metric measurements along with timestamps. Additionally, the class offers the flexibility to use a time provider of your choice for accurate timestamp generation. -:::code language="csharp" source="./snippets/dotnet-8/csharp/ConsoleApp/MetricCollector.cs" id="MetricCollector"::: +:::code language="csharp" source="../snippets/dotnet-8/csharp/ConsoleApp/MetricCollector.cs" id="MetricCollector"::: ### System.Numerics.Tensors.TensorPrimitives @@ -650,570 +785,6 @@ This package replaces the [System.Numerics.Tensors package](https://www.nuget.or For more information, see the [Announcing .NET 8 RC 2 blog post](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc2/). -## Garbage collection - -.NET 8 adds a capability to adjust the memory limit on the fly. This is useful in cloud-service scenarios, where demand comes and goes. To be cost-effective, services should scale up and down on resource consumption as the demand fluctuates. When a service detects a decrease in demand, it can scale down resource consumption by reducing its memory limit. Previously, this would fail because the garbage collector (GC) was unaware of the change and might allocate more memory than the new limit. With this change, you can call the API to update the GC with the new memory limit. - -There are some limitations to be aware of: - -- On 32-bit platforms (for example, Windows x86 and Linux ARM), .NET is unable to establish a new heap hard limit if there isn't already one. -- The API might return a non-zero status code indicating the refresh failed. This can happen if the scale-down is too aggressive and leaves no room for the GC to maneuver. In this case, consider calling `GC.Collect(2, GCCollectionMode.Aggressive)` to shrink the current memory usage, and then try again. -- If you scale up the memory limit beyond the size that the GC believes the process can handle during startup, the `RefreshMemoryLimit` call will succeed, but it won't be able to use more memory than what it perceives as the limit. - -The following code snippet shows how to call the API. - -```csharp -GC.RefreshMemoryLimit(); -``` - -You can also refresh some of the GC configuration settings related to the memory limit. The following code snippet sets the heap hard limit to 100 mebibytes (MiB): - -```csharp -AppContext.SetData("GCHeapHardLimit", (ulong)100 * 1_024 * 1_024); -GC.RefreshMemoryLimit(); -``` - -The API can throw an if the hard limit is invalid, for example, in the case of negative heap hard limit percentages and if the hard limit is too low. This can happen if the heap hard limit that the refresh will set, either because of new AppData settings or implied by the container memory limit changes, is lower than what's already committed. - -## Configuration-binding source generator - -.NET 8 introduces a source generator to provide AOT and trim-friendly [configuration](/aspnet/core/fundamentals/configuration/) in ASP.NET Core. The generator is an alternative to the pre-existing reflection-based implementation. - -The source generator probes for , , and calls to retrieve type info from. When the generator is enabled in a project, the compiler implicitly chooses generated methods over the pre-existing reflection-based framework implementations. - -No source code changes are needed to use the generator. It's enabled by default in AOT'd web apps. For other project types, the source generator is off by default, but you can opt in by setting the `EnableConfigurationBindingGenerator` property to `true` in your project file: - -```xml - - true - -``` - -The following code shows an example of invoking the binder. - -:::code language="csharp" source="./snippets/dotnet-8/csharp/WebSDK/ConfigBindingSG.cs"::: - -## Reflection improvements - -[Function pointers](../../csharp/language-reference/unsafe-code.md#function-pointers) were introduced in .NET 5, however, the corresponding support for reflection wasn't added at that time. When using `typeof` or reflection on a function pointer, for example, `typeof(delegate*())` or `FieldInfo.FieldType` respectively, an was returned. Starting in .NET 8, a object is returned instead. This type provides access to function pointer metadata, including the calling conventions, return type, and parameters. - -> [!NOTE] -> A function pointer instance, which is a physical address to a function, continues to be represented as an . Only the reflection type has changed. - -The new functionality is currently implemented only in the CoreCLR runtime and . - -New APIs have been added to , such as , and to , , and . The following code shows how to use some of the new APIs for reflection. - -:::code language="csharp" source="./snippets/dotnet-8/csharp/ConsoleApp/FunctionPointerReflection.cs"::: - -The previous example produces the following output: - -```Output -IsFunctionPointer: True -IsUnmanagedFunctionPointer: True -Return type: System.Void -Parameter type: System.Int32& -Calling convention: System.Runtime.CompilerServices.CallConvSuppressGCTransition -Calling convention: System.Runtime.CompilerServices.CallConvCdecl -Required modifier for first parameter: System.Runtime.InteropServices.InAttribute -``` - -## Native AOT support - -The option to [publish as Native AOT](../deploying/native-aot/index.md) was first introduced in .NET 7. Publishing an app with Native AOT creates a fully self-contained version of your app that doesn't need a runtime—everything is included in a single file. .NET 8 brings the following improvements to Native AOT publishing: - -- Adds support for the x64 and Arm64 architectures on *macOS*. -- Reduces the sizes of Native AOT apps on Linux by up to 50%. The following table shows the size of a "Hello World" app published with Native AOT that includes the entire .NET runtime on .NET 7 vs. .NET 8: - - | Operating system | .NET 7 | .NET 8 | - |-----------------------------------------|---------|---------| - | Linux x64 (with `-p:StripSymbols=true`) | 3.76 MB | 1.84 MB | - | Windows x64 | 2.85 MB | 1.77 MB | - -- Lets you specify an optimization preference: size or speed. By default, the compiler chooses to generate fast code while being mindful of the size of the application. However, you can use the `` MSBuild property to optimize specifically for one or the other. For more information, see [Optimize AOT deployments](../deploying/native-aot/optimizing.md). - -### Console app template - -The default console app template now includes support for AOT out-of-the-box. To create a project that's configured for AOT compilation, just run `dotnet new console --aot`. The project configuration added by `--aot` has three effects: - -- Generates a native self-contained executable with Native AOT when you publish the project, for example, with `dotnet publish` or Visual Studio. -- Enables compatibility analyzers for trimming, AOT, and single file. These analyzers alert you to potentially problematic parts of your project (if there are any). -- Enables debug-time emulation of AOT so that when you debug your project without AOT compilation, you get a similar experience to AOT. For example, if you use in a NuGet package that wasn't annotated for AOT (and therefore was missed by the compatibility analyzer), the emulation means you won't have any surprises when you try to publish the project with AOT. - -### Target iOS-like platforms with Native AOT - -.NET 8 starts the work to enable Native AOT support for iOS-like platforms. You can now build and run .NET iOS and .NET MAUI applications with Native AOT on the following platforms: - -- `ios` -- `iossimulator` -- `maccatalyst` -- `tvos` -- `tvossimulator` - -Preliminary testing shows that app size on disk decreases by about 35% for .NET iOS apps that use Native AOT instead of Mono. App size on disk for .NET MAUI iOS apps decreases up to 50%. Additionally, the startup time is also faster. .NET iOS apps have about 28% faster startup time, while .NET MAUI iOS apps have about 50% better startup performance compared to Mono. The .NET 8 support is experimental and only the first step for the feature as a whole. For more information, see the [.NET 8 Performance Improvements in .NET MAUI blog post](https://devblogs.microsoft.com/dotnet/dotnet-8-performance-improvements-in-dotnet-maui/). - -Native AOT support is available as an opt-in feature intended for app deployment; Mono is still the default runtime for app development and deployment. To build and run a .NET MAUI application with Native AOT on an iOS device, use `dotnet workload install maui` to install the .NET MAUI workload and `dotnet new maui -n HelloMaui` to create the app. Then, set the MSBuild property `PublishAot` to `true` in the project file. - -```xml - - true - -``` - -When you set the required property and run `dotnet publish` as shown in the following example, the app will be deployed by using Native AOT. - -```dotnetcli -dotnet publish -f net8.0-ios -c Release -r ios-arm64 /t:Run -``` - -#### Limitations - -Not all iOS features are compatible with Native AOT. Similarly, not all libraries commonly used in iOS are compatible with NativeAOT. And in addition to the existing [limitations of Native AOT deployment](../deploying/native-aot/index.md#limitations-of-native-aot-deployment), the following list shows some of the other limitations when targeting iOS-like platforms: - -- Using Native AOT is only enabled during app deployment (`dotnet publish`). -- Managed code debugging is only supported with Mono. -- Compatibility with the .NET MAUI framework is limited. - -## Performance improvements - -.NET 8 includes improvements to code generation and just-in time (JIT) compilation: - -- Arm64 performance improvements -- SIMD improvements -- Support for AVX-512 ISA extensions (see [Vector512 and AVX-512](#vector512-and-avx-512)) -- Cloud-native improvements -- JIT throughput improvements -- Loop and general optimizations -- Optimized access for fields marked with -- Consecutive register allocation. Arm64 has two instructions for table vector lookup, which require that all entities in their tuple operands are present in consecutive registers. -- JIT/NativeAOT can now unroll and auto-vectorize some memory operations with SIMD, such as comparison, copying, and zeroing, if it can determine their sizes at compile time. - -In addition, dynamic profile-guided optimization (PGO) has been improved and is now enabled by default. You no longer need to use a [runtime configuration option](../runtime-config/compilation.md#profile-guided-optimization) to enable it. Dynamic PGO works hand-in-hand with tiered compilation to further optimize code based on additional instrumentation that's put in place during tier 0. - -On average, dynamic PGO increases performance by about 15%. In a benchmark suite of ~4600 tests, 23% saw performance improvements of 20% or more. - -### Codegen struct promotion - -.NET 8 includes a new physical promotion optimization pass for codegen that generalizes the JIT's ability to promote struct variables. This optimization (also called *scalar replacement of aggregates*) replaces the fields of struct variables by primitive variables that the JIT is then able to reason about and optimize more precisely. - -The JIT already supported this optimization but with several large limitations including: - -- It was only supported for structs with four or fewer fields. -- It was only supported if each field was a primitive type, or a simple struct wrapping a primitive type. - -Physical promotion removes these limitations, which fixes a number of long-standing JIT issues. - -## .NET MAUI - -For information about what's new in .NET MAUI in .NET 8, see [What's new in .NET MAUI for .NET 8](/dotnet/maui/whats-new/dotnet-8). - -## .NET SDK - -This section contains the following subtopics: - -- [CLI-based project evaluation](#cli-based-project-evaluation) -- [Terminal build output](#terminal-build-output) -- [Simplified output paths](#simplified-output-paths) -- ['dotnet workload clean' command](#dotnet-workload-clean-command) -- ['dotnet publish' and 'dotnet pack' assets](#dotnet-publish-and-dotnet-pack-assets) -- [Template engine](#template-engine) -- [Source Link](#source-link) -- [Source-build SDK](#source-build-sdk) - -### CLI-based project evaluation - -MSBuild includes a new feature that makes it easier to incorporate data from MSBuild into your scripts or tools. The following new flags are available for CLI commands such as [dotnet publish](../tools/dotnet-publish.md) to obtain data for use in CI pipelines and elsewhere. - -| Flag | Description | -|-----------------------------------|----------------------------------------------------------| -| `--getProperty:` | Retrieves the MSBuild property with the specified name. | -| `--getItem:` | Retrieves MSBuild items of the specified type. | -| `--getTargetResults:` | Retrieves the outputs from running the specified target. | - -Values are written to the standard output. Multiple or complex values are output as JSON, as shown in the following examples. - -```dotnetcli ->dotnet publish --getProperty:OutputPath -bin\Release\net8.0\ -``` - -```dotnetcli ->dotnet publish -p PublishProfile=DefaultContainer --getProperty:GeneratedContainerDigest --getProperty:GeneratedContainerConfiguration -{ - "Properties": { - "GeneratedContainerDigest": "sha256:ef880a503bbabcb84bbb6a1aa9b41b36dc1ba08352e7cd91c0993646675174c4", - "GeneratedContainerConfiguration": "{\u0022config\u0022:{\u0022ExposedPorts\u0022:{\u00228080/tcp\u0022:{}},\u0022Labels\u0022...}}" - } -} -``` - -```dotnetcli ->dotnet publish -p PublishProfile=DefaultContainer --getItem:ContainerImageTags -{ - "Items": { - "ContainerImageTags": [ - { - "Identity": "latest", - ... - ] - } -} -``` - -### Terminal build output - -`dotnet build` has a new option to produce more modernized build output. This *terminal logger* output groups errors with the project they came from, better differentiates the different target frameworks for multi-targeted projects, and provides real-time information about what the build is doing. To opt into the new output, use the `--tl` option. For more information about this option, see [dotnet build options](../tools/dotnet-build.md#options). - -### Simplified output paths - -.NET 8 introduces an option to simplify the output path and folder structure for build outputs. Previously, .NET apps produced a deep and complex set of output paths for different build artifacts. The new, simplified output path structure gathers all build outputs into a common location, which makes it easier for tooling to anticipate. - -For more information, see [Artifacts output layout](../sdk/artifacts-output.md). - -### `dotnet workload clean` command - -.NET 8 introduces a new command to clean up workload packs that might be left over through several .NET SDK or Visual Studio updates. If you encounter issues when managing workloads, consider using `workload clean` to safely restore to a known state before trying again. The command has two modes: - -- `dotnet workload clean` - - Runs [workload garbage collection](https://github.com/dotnet/designs/blob/main/accepted/2021/workloads/workload-installation.md#workload-pack-installation-records-and-garbage-collection) for file-based or MSI-based workloads, which cleans up orphaned packs. Orphaned packs are from uninstalled versions of the .NET SDK or packs where installation records for the pack no longer exist. - - If Visual Studio is installed, the command also lists any workloads that you should clean up manually using Visual Studio. - -- `dotnet workload clean --all` - - This mode is more aggressive and cleans every pack on the machine that's of the current SDK workload installation type (and that's not from Visual Studio). It also removes all workload installation records for the running .NET SDK feature band and below. - -### `dotnet publish` and `dotnet pack` assets - -Since the [`dotnet publish`](../tools/dotnet-publish.md) and [`dotnet pack`](../tools/dotnet-pack.md) commands are intended to produce production assets, they now produce `Release` assets by default. - -The following output shows the different behavior between `dotnet build` and `dotnet publish`, and how you can revert to publishing `Debug` assets by setting the `PublishRelease` property to `false`. - -```console -/app# dotnet new console -/app# dotnet build - app -> /app/bin/Debug/net8.0/app.dll -/app# dotnet publish - app -> /app/bin/Release/net8.0/app.dll - app -> /app/bin/Release/net8.0/publish/ -/app# dotnet publish -p:PublishRelease=false - app -> /app/bin/Debug/net8.0/app.dll - app -> /app/bin/Debug/net8.0/publish/ -``` - -For more information, see ['dotnet pack' uses Release config](../compatibility/sdk/8.0/dotnet-pack-config.md) and ['dotnet publish' uses Release config](../compatibility/sdk/8.0/dotnet-publish-config.md). - -### `dotnet restore` security auditing - -Starting in .NET 8, you can opt into security checks for known vulnerabilities when dependency packages are restored. This auditing produces a report of security vulnerabilities with the affected package name, the severity of the vulnerability, and a link to the advisory for more details. When you run `dotnet add` or `dotnet restore`, warnings NU1901-NU1904 will appear for any vulnerabilities that are found. For more information, see [Audit for security vulnerabilities](../tools/dotnet-restore.md#audit-for-security-vulnerabilities). - -### Template engine - -The [template engine](https://github.com/dotnet/templating) provides a more secure experience in .NET 8 by integrating some of NuGet's security-related features. The improvements include: - -- Prevent downloading packages from `http://` feeds by default. For example, the following command will fail to install the template package because the source URL doesn't use HTTPS. - - `dotnet new install console --add-source "http://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json"` - - You can override this limitation by using the `--force` flag. - -- For `dotnet new`, `dotnet new install`, and `dotnet new update`, check for known vulnerabilities in the template package. If vulnerabilities are found and you wish to proceed, you must use the `--force` flag. - -- For `dotnet new`, provide information about the template package owner. Ownership is verified by the NuGet portal and can be considered a trustworthy characteristic. - -- For `dotnet search` and `dotnet uninstall`, indicate whether a template is installed from a package that's "trusted"—that is, it uses a [reserved prefix](/nuget/nuget-org/id-prefix-reservation). - -### Source Link - -[Source Link](../../standard/library-guidance/sourcelink.md) is now included in the .NET SDK. The goal is that by bundling Source Link into the SDK, instead of requiring a separate `` for the package, more packages will include this information by default. That information will improve the IDE experience for developers. - -> [!NOTE] -> As a side effect of this change, commit information is included in the `InformationalVersion` value of built libraries and applications, even those that target .NET 7 or an earlier version. For more information, see [Source Link included in the .NET SDK](../compatibility/sdk/8.0/source-link.md). - -### Source-build SDK - -The Linux distribution-built (source-build) SDK now has the capability to build self-contained applications using the source-build runtime packages. The distribution-specific runtime package is bundled with the source-build SDK. During self-contained deployment, this bundled runtime package will be referenced, thereby enabling the feature for users. - -## Globalization - -### HybridGlobalization mode on iOS/tvOS/MacCatalyst - -Mobile apps can now use a new *hybrid* globalization mode that uses a lighter ICU bundle. In hybrid mode, globalization data is partially pulled from the ICU bundle and partially from calls into Native API. It serves all the [locales supported by mobile](https://github.com/dotnet/icu/blob/dotnet/main/icu-filters/icudt_mobile.json). - -`HybridGlobalization` is most suitable for apps that can't work in `InvariantGlobalization` mode and that use cultures that were trimmed from ICU data on mobile. You can also use it when you want to load a smaller ICU data file. (The *icudt_hybrid.dat* file is 34.5 % smaller than the default ICU data file *icudt.dat*.) - -To use `HybridGlobalization` mode, set the MSBuild property to true: - -```xml - - true - -``` - -There are some limitations to be aware of: - -- Due to limitations of Native API, not all globalization APIs are supported in hybrid mode. -- Some of the supported APIs have different behavior. - -To make sure your application isn't affected, see [Behavioral differences](https://github.com/dotnet/runtime/blob/main/docs/design/features/globalization-hybrid-mode.md#behavioral-differences). - -## Containers - -- [Container images](#container-images) -- [Container publishing](#container-publishing) - -### Container images - -The following changes have been made to .NET container images for .NET 8: - -- [Generated-image defaults](#generated-image-defaults) -- [Debian 12](#debian-12) -- [Non-root user](#non-root-user) -- [Chiseled Ubuntu images](#chiseled-ubuntu-images) -- [Build multi-platform container images](#build-multi-platform-container-images) -- [ASP.NET composite images](#aspnet-composite-images) - -#### Generated-image defaults - -The new [`non-root` capability](#non-root-user) of the Microsoft .NET containers is now the default, which helps your apps stay secure-by-default. Change this default at any time by setting your own `ContainerUser`. - -The default container tag is now `latest`. This default is in line with other tooling in the containers space and makes containers easier to use in inner development loops. - -#### Debian 12 - -The container images now use [Debian 12 (Bookworm)](https://wiki.debian.org/DebianBookworm). Debian is the default Linux distro in the .NET container images. - -#### Non-root user - -Images include a `non-root` user. This user makes the images `non-root` capable. To run as `non-root`, add the following line at the end of your Dockerfile (or a similar instruction in your Kubernetes manifests): - -```dockerfile -USER app -``` - -.NET 8 adds an environment variable for the UID for the `non-root` user, which is 64198. This environment variable is useful for the Kubernetes `runAsNonRoot` test, which requires that the container user be set via UID and not by name. This [dockerfile](https://github.com/dotnet/dotnet-docker/blob/e5bc76bca49a1bbf9c11e74a590cf6a9fe9dbf2a/samples/aspnetapp/Dockerfile.alpine-non-root#L27) shows an example usage. - -The default port also changed from port `80` to `8080`. To support this change, a new environment variable `ASPNETCORE_HTTP_PORTS` is available to make it easier to change ports. The variable accepts a list of ports, which is simpler than the format required by `ASPNETCORE_URLS`. If you change the port back to port `80` using one of these variables, you can't run as `non-root`. - -#### Chiseled Ubuntu images - -[Chiseled Ubuntu images](https://hub.docker.com/r/ubuntu/dotnet-deps) are available for .NET 8. Chiseled images have a reduced attacked surface because they're ultra-small, have no package manager or shell, and are `non-root`. This type of image is for developers who want the benefit of appliance-style computing. Chiseled images are published to the [.NET nightly artifact registry](https://mcr.microsoft.com/product/dotnet/nightly/aspnet/tags). - -#### Build multi-platform container images - -Docker supports using and building [multi-platform images](https://docs.docker.com/build/building/multi-platform/) that work across multiple environments. .NET 8 introduces a new pattern that enables you to mix and match architectures with the .NET images you build. As an example, if you're using macOS and want to target an x64 cloud service in Azure, you can build the image by using the `--platform` switch as follows: - -`docker build --pull -t app --platform linux/amd64` - -The .NET SDK now supports `$TARGETARCH` values and the `-a` argument on restore. The following code snippet shows an example: - -```dockerfile -RUN dotnet restore -a $TARGETARCH - -# Copy everything else and build app. -COPY aspnetapp/. . -RUN dotnet publish -a $TARGETARCH --self-contained false --no-restore -o /app -``` - -For more information, see the [Improving multi-platform container support](https://devblogs.microsoft.com/dotnet/improving-multiplatform-container-support/) blog post. - -#### ASP.NET composite images - -As part of an effort to improve containerization performance, new ASP.NET Docker images are available that have a composite version of the runtime. This composite is built by compiling multiple MSIL assemblies into a single ready-to-run (R2R) output binary. Because these assemblies are embedded into a single image, jitting takes less time, and the startup performance of apps improves. The other big advantage of the composite over the regular ASP.NET image is that the composite images have a smaller size on disk. - -There is a caveat to be aware of. Since composites have multiple assemblies embedded into one, they have tighter version coupling. Apps can't use custom versions of framework or ASP.NET binaries. - -Composite images are available for the Alpine Linux, Jammy Chiseled, and Mariner Distroless platforms from the `mcr.microsoft.com/dotnet/nightly/aspnet` repo. The tags are listed with the `-composite` suffix on the [ASP.NET Docker page](https://hub.docker.com/_/microsoft-dotnet-nightly-aspnet). - -### Container publishing - -- [Performance and compatibility](#performance-and-compatibility) -- [Authentication](#authentication) -- [Publish to tar.gz archive](#publish-to-targz-archive) - -#### Performance and compatibility - -.NET 8 has improved performance for pushing containers to remote registries, especially Azure registries. Speedup comes from pushing layers in one operation and, for registries that don't support atomic uploads, a more reliable chunking mechanism. - -These improvements also mean that more registries are supported: Harbor, Artifactory, Quay.io, and Podman. - -#### Authentication - -.NET 8 adds support for OAuth token exchange authentication (Azure Managed Identity) when pushing containers to registries. This support means that you can now push to registries like Azure Container Registry without any authentication errors. The following commands show an example publishing flow: - -```console -> az acr login -n -> dotnet publish -r linux-x64 -p PublishProfile=DefaultContainer -``` - -For more information containerizing .NET apps, see [Containerize a .NET app with dotnet publish](../docker/publish-as-container.md). - -#### Publish to tar.gz archive - -Starting in .NET 8, you can create a container directly as a *tar.gz* archive. This feature is useful if your workflow isn't straightforward and requires that you, for example, run a scanning tool over your images before pushing them. Once the archive is created, you can move it, scan it, or load it into a local Docker toolchain. - -To publish to an archive, add the `ContainerArchiveOutputPath` property to your `dotnet publish` command, for example: - -```dotnetcli -dotnet publish \ - -p PublishProfile=DefaultContainer \ - -p ContainerArchiveOutputPath=./images/sdk-container-demo.tar.gz -``` - -You can specify either a folder name or a path with a specific file name. - -## Source-generated COM interop - -.NET 8 includes a new source generator that supports interoperating with COM interfaces. You can use the to mark an interface as a COM interface for the source generator. The source generator will then generate code to enable calling from C# code to unmanaged code. It also generates code to enable calling from unmanaged code into C#. This source generator integrates with , and you can use types with the as parameters and return types in `LibraryImport`-attributed methods. - -:::code language="csharp" source="./snippets/dotnet-8/csharp/ConsoleApp/Interop.cs"::: - -The source generator also supports the new attribute to enable you to pass types that implement interfaces with the attribute to unmanaged code. The source generator will generate the code necessary to expose a COM object that implements the interfaces and forwards calls to the managed implementation. - -Methods on interfaces with the attribute support all the same types as `LibraryImportAttribute`, and `LibraryImportAttribute` now supports `GeneratedComInterface`-attributed types and `GeneratedComClass`-attributed types. - -If your C# code only uses a `GeneratedComInterface`-attributed interface to either wrap a COM object from unmanaged code or wrap a managed object from C# to expose to unmanaged code, you can use the options in the property to customize which code will be generated. These options mean you don't need to write marshallers for scenarios that you know won't be used. - -The source generator uses the new type to create and manage the COM object wrappers and the managed object wrappers. This new type handles providing the expected .NET user experience for COM interop, while providing customization points for advanced users. If your application has its own mechanism for defining types from COM or if you need to support scenarios that source-generated COM doesn't currently support, consider using the new type to add the missing features for your scenario and get the same .NET user experience for your COM types. - -If you're using Visual Studio, new analyzers and code fixes make it easy to convert your existing COM interop code to use source-generated interop. Next to each interface that has the , a lightbulb offers an option to convert to source-generated interop. The fix changes the interface to use the attribute. And next to every class that implements an interface with `GeneratedComInterfaceAttribute`, a lightbulb offers an option to add the attribute to the type. Once your types are converted, you can move your `DllImport` methods to use `LibraryImportAttribute`. - -### Limitations - -The COM source generator doesn't support apartment affinity, using the `new` keyword to activate a COM CoClass, and the following APIs: - -- -based interfaces. -- -based interfaces. -- COM properties and events. - -## .NET on Linux - -### Minimum support baselines for Linux - -The minimum support baselines for Linux have been updated for .NET 8. .NET is built targeting Ubuntu 16.04, for all architectures. That's primarily important for defining the minimum `glibc` version for .NET 8. .NET 8 will fail to start on distro versions that include an older glibc, such as Ubuntu 14.04 or Red Hat Enterprise Linux 7. - -For more information, see [Red Hat Enterprise Linux Family support](https://github.com/dotnet/core/blob/main/linux-support.md#red-hat-enterprise-linux-family-support). - -### Build your own .NET on Linux - -In previous .NET versions, you could build .NET from source, but it required you to create a "source tarball" from the [dotnet/installer](https://github.com/dotnet/installer) repo commit that corresponded to a release. In .NET 8, that's no longer necessary and you can build .NET on Linux directly from the [dotnet/dotnet](https://github.com/dotnet/dotnet) repository. That repo uses [dotnet/source-build](https://github.com/dotnet/source-build) to build .NET runtimes, tools, and SDKs. This is the same build that Red Hat and Canonical use to build .NET. - -Building in a container is the easiest approach for most people, since the `dotnet-buildtools/prereqs` container images contain all the required dependencies. For more information, see the [build instructions](https://github.com/dotnet/dotnet#building). - -## Cross-built Windows apps - -When you build apps that target Windows on non-Windows platforms, the resulting executable is now updated with any specified Win32 resources—for example, application icon, manifest, version information. - -Previously, applications had to be built on Windows in order to have such resources. Fixing this gap in cross-building support has been a popular request, as it was a significant pain point affecting both infrastructure complexity and resource usage. - -## AOT compilation for Android apps - -To decrease app size, .NET and .NET MAUI apps that target Android use *profiled* ahead-of-time (AOT) compilation mode when they're built in Release mode. Profiled AOT compilation affects fewer methods than regular AOT compilation. .NET 8 introduces the `` property that lets you opt-in to further AOT compilation for Android apps to decrease app size even more. - -```xml - - true - -``` - -By default, setting `AndroidStripILAfterAOT` to `true` overrides the default `AndroidEnableProfiledAot` setting, allowing (nearly) all methods that were AOT-compiled to be trimmed. You can also use profiled AOT and IL stripping together by explicitly setting both properties to `true`: - -```xml - - true - true - -``` - -## Code analysis - -.NET 8 includes several new code analyzers and fixers to help verify that you're using .NET library APIs correctly and efficiently. The following table summarizes the new analyzers. - -| Rule ID | Category | Description | -|--|--|--| -| CA1856 | Performance | Fires when the attribute is not applied correctly on a parameter. | -| CA1857 | Performance | Fires when a parameter is annotated with but the provided argument isn't a constant. | -| [CA1858](../../fundamentals/code-analysis/quality-rules/ca1858.md) | Performance | To determine whether a string starts with a given prefix, it's better to call than to call and then compare the result with zero. | -| [CA1859](../../fundamentals/code-analysis/quality-rules/ca1859.md) | Performance | This rule recommends upgrading the type of specific local variables, fields, properties, method parameters, and method return types from interface or abstract types to concrete types when possible. Using concrete types leads to higher quality generated code. | -| [CA1860](../../fundamentals/code-analysis/quality-rules/ca1860.md) | Performance | To determine whether a collection type has any elements, it's better to use `Length`, `Count`, or `IsEmpty` than to call . | -| [CA1861](../../fundamentals/code-analysis/quality-rules/ca1861.md) | Performance | Constant arrays passed as arguments aren't reused when called repeatedly, which implies a new array is created each time. To improve performance, consider extracting the array to a static readonly field. | -| [CA1865-CA1867](../../fundamentals/code-analysis/quality-rules/ca1865-ca1867.md) | Performance | The char overload is a better-performing overload for a string with a single char. | -| CA2021 | Reliability | and require compatible types to function correctly. Widening and user-defined conversions aren't supported with generic types. | -| CA1510-CA1513 | Maintainability | Throw helpers are simpler and more efficient than an `if` block constructing a new exception instance. These four analyzers were created for the following exceptions: , , and . | - -## Windows Presentation Foundation - -- [Hardware acceleration](#hardware-acceleration) -- [OpenFolderDialog](#openfolderdialog) - -### Hardware acceleration - -Previously, all WPF applications that were accessed remotely had to use software rendering, even if the system had hardware rendering capabilities. .NET 8 adds an option that lets you opt into hardware acceleration for Remote Desktop Protocol (RDP). - -Hardware acceleration refers to the use of a computer's graphics processing unit (GPU) to speed up the rendering of graphics and visual effects in an application. This can result in improved performance and more seamless, responsive graphics. In contrast, software rendering relies solely on the computer's central processing unit (CPU) to render graphics, which can be slower and less effective. - -To opt in, set the `Switch.System.Windows.Media.EnableHardwareAccelerationInRdp` configuration property to `true` in a *runtimeconfig.json* file. For more information, see [Hardware acceleration in RDP](../runtime-config/wpf.md#hardware-acceleration-in-rdp). - -### OpenFolderDialog - -WPF includes a new dialog box control called `OpenFolderDialog`. This control lets app users browse and select folders. Previously, app developers relied on third-party software to achieve this functionality. - -```csharp -var openFolderDialog = new OpenFolderDialog() -{ - Title = "Select folder to open ...", - InitialDirectory = Environment.GetFolderPath( - Environment.SpecialFolder.ProgramFiles) -}; - -string folderName = ""; -if (openFolderDialog.ShowDialog()) -{ - folderName = openFolderDialog.FolderName; -} -``` - -For more information, see [WPF File Dialog Improvements in .NET 8 (.NET blog)](https://devblogs.microsoft.com/dotnet/wpf-file-dialog-improvements-in-dotnet-8/). - -## NuGet - -Starting in .NET 8, NuGet verifies signed packages on Linux by default. NuGet continues to verify signed packages on Windows as well. - -Most users shouldn't notice the verification. However, if you have an existing root certificate bundle located at */etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem*, you may see trust failures accompanied by [warning NU3042](/nuget/reference/errors-and-warnings/nu3042). - -You can opt out of verification by setting the environment variable `DOTNET_NUGET_SIGNATURE_VERIFICATION` to `false`. - -## Diagnostics - -### C# Hot Reload supports modifying generics - -Starting in .NET 8, C# Hot Reload [supports modifying generic types and generic methods](https://devblogs.microsoft.com/dotnet/hot-reload-generics/). When you debug console, desktop, mobile, or WebAssembly applications with Visual Studio, you can apply changes to generic classes and generic methods in C# code or Razor pages. For more information, see the [full list of edits supported by Roslyn](https://github.com/dotnet/roslyn/blob/main/docs/wiki/EnC-Supported-Edits.md) - ## See also -- [Breaking changes in .NET 8](../compatibility/8.0.md) -- [What's new in ASP.NET Core 8.0](/aspnet/core/release-notes/aspnetcore-8.0) - -### .NET blog - -- [Announcing .NET 8](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8/) -- [Announcing .NET 8 RC 2](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc2/) -- [Announcing .NET 8 RC 1](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc1/) -- [Announcing .NET 8 Preview 7](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-7/) -- [Announcing .NET 8 Preview 6](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-6/) -- [Announcing .NET 8 Preview 5](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-5/) -- [Announcing .NET 8 Preview 4](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-4/) -- [Announcing .NET 8 Preview 3](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-3/) -- [Announcing .NET 8 Preview 2](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-2/) -- [Announcing .NET 8 Preview 1](https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-1/) -- [ASP.NET Core in .NET 8](https://devblogs.microsoft.com/dotnet/announcing-asp-net-core-in-dotnet-8) -- [ASP.NET Core updates in .NET 8 RC 2](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-rc-2/) -- [ASP.NET Core updates in .NET 8 RC 1](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-rc-1/) -- [ASP.NET Core updates in .NET 8 Preview 7](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-7/) -- [ASP.NET Core updates in .NET 8 Preview 6](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-6/) -- [ASP.NET Core updates in .NET 8 Preview 5](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-5/) -- [ASP.NET Core updates in .NET 8 Preview 4](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-4/) -- [ASP.NET Core updates in .NET 8 Preview 3](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-3/) -- [ASP.NET Core updates in .NET 8 Preview 2](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-2/) -- [ASP.NET Core updates in .NET 8 Preview 1](https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-1/) +- [What's new in .NET 8](overview.md) diff --git a/docs/core/whats-new/dotnet-8/sdk.md b/docs/core/whats-new/dotnet-8/sdk.md new file mode 100644 index 0000000000000..115ded227daaa --- /dev/null +++ b/docs/core/whats-new/dotnet-8/sdk.md @@ -0,0 +1,269 @@ +--- +title: What's new in the SDK and tooling for .NET 8 +description: Learn about the new .NET SDK and tooling features introduced in .NET 8. +titleSuffix: "" +ms.date: 11/14/2023 +ms.topic: overview +ms.author: gewarren +author: gewarren +--- +# What's new in the SDK and tooling for .NET 8 + +This article describes new features in the .NET SDK and tooling for .NET 8. + +## SDK + +This section contains the following subtopics: + +- [CLI-based project evaluation](#cli-based-project-evaluation) +- [Terminal build output](#terminal-build-output) +- [Simplified output paths](#simplified-output-paths) +- ['dotnet workload clean' command](#dotnet-workload-clean-command) +- ['dotnet publish' and 'dotnet pack' assets](#dotnet-publish-and-dotnet-pack-assets) +- [Template engine](#template-engine) +- [Source Link](#source-link) +- [Source-build SDK](#source-build-sdk) + +### CLI-based project evaluation + +MSBuild includes a new feature that makes it easier to incorporate data from MSBuild into your scripts or tools. The following new flags are available for CLI commands such as [dotnet publish](../../tools/dotnet-publish.md) to obtain data for use in CI pipelines and elsewhere. + +| Flag | Description | +|-----------------------------------|----------------------------------------------------------| +| `--getProperty:` | Retrieves the MSBuild property with the specified name. | +| `--getItem:` | Retrieves MSBuild items of the specified type. | +| `--getTargetResults:` | Retrieves the outputs from running the specified target. | + +Values are written to the standard output. Multiple or complex values are output as JSON, as shown in the following examples. + +```dotnetcli +>dotnet publish --getProperty:OutputPath +bin\Release\net8.0\ +``` + +```dotnetcli +>dotnet publish -p PublishProfile=DefaultContainer --getProperty:GeneratedContainerDigest --getProperty:GeneratedContainerConfiguration +{ + "Properties": { + "GeneratedContainerDigest": "sha256:ef880a503bbabcb84bbb6a1aa9b41b36dc1ba08352e7cd91c0993646675174c4", + "GeneratedContainerConfiguration": "{\u0022config\u0022:{\u0022ExposedPorts\u0022:{\u00228080/tcp\u0022:{}},\u0022Labels\u0022...}}" + } +} +``` + +```dotnetcli +>dotnet publish -p PublishProfile=DefaultContainer --getItem:ContainerImageTags +{ + "Items": { + "ContainerImageTags": [ + { + "Identity": "latest", + ... + ] + } +} +``` + +### Terminal build output + +`dotnet build` has a new option to produce more modernized build output. This *terminal logger* output groups errors with the project they came from, better differentiates the different target frameworks for multi-targeted projects, and provides real-time information about what the build is doing. To opt into the new output, use the `--tl` option. For more information about this option, see [dotnet build options](../../tools/dotnet-build.md#options). + +### Simplified output paths + +.NET 8 introduces an option to simplify the output path and folder structure for build outputs. Previously, .NET apps produced a deep and complex set of output paths for different build artifacts. The new, simplified output path structure gathers all build outputs into a common location, which makes it easier for tooling to anticipate. + +For more information, see [Artifacts output layout](../../sdk/artifacts-output.md). + +### `dotnet workload clean` command + +.NET 8 introduces a new command to clean up workload packs that might be left over through several .NET SDK or Visual Studio updates. If you encounter issues when managing workloads, consider using `workload clean` to safely restore to a known state before trying again. The command has two modes: + +- `dotnet workload clean` + + Runs [workload garbage collection](https://github.com/dotnet/designs/blob/main/accepted/2021/workloads/workload-installation.md#workload-pack-installation-records-and-garbage-collection) for file-based or MSI-based workloads, which cleans up orphaned packs. Orphaned packs are from uninstalled versions of the .NET SDK or packs where installation records for the pack no longer exist. + + If Visual Studio is installed, the command also lists any workloads that you should clean up manually using Visual Studio. + +- `dotnet workload clean --all` + + This mode is more aggressive and cleans every pack on the machine that's of the current SDK workload installation type (and that's not from Visual Studio). It also removes all workload installation records for the running .NET SDK feature band and below. + +### `dotnet publish` and `dotnet pack` assets + +Since the [`dotnet publish`](../../tools/dotnet-publish.md) and [`dotnet pack`](../../tools/dotnet-pack.md) commands are intended to produce production assets, they now produce `Release` assets by default. + +The following output shows the different behavior between `dotnet build` and `dotnet publish`, and how you can revert to publishing `Debug` assets by setting the `PublishRelease` property to `false`. + +```console +/app# dotnet new console +/app# dotnet build + app -> /app/bin/Debug/net8.0/app.dll +/app# dotnet publish + app -> /app/bin/Release/net8.0/app.dll + app -> /app/bin/Release/net8.0/publish/ +/app# dotnet publish -p:PublishRelease=false + app -> /app/bin/Debug/net8.0/app.dll + app -> /app/bin/Debug/net8.0/publish/ +``` + +For more information, see ['dotnet pack' uses Release config](../../compatibility/sdk/8.0/dotnet-pack-config.md) and ['dotnet publish' uses Release config](../../compatibility/sdk/8.0/dotnet-publish-config.md). + +### `dotnet restore` security auditing + +Starting in .NET 8, you can opt into security checks for known vulnerabilities when dependency packages are restored. This auditing produces a report of security vulnerabilities with the affected package name, the severity of the vulnerability, and a link to the advisory for more details. When you run `dotnet add` or `dotnet restore`, warnings NU1901-NU1904 will appear for any vulnerabilities that are found. For more information, see [Audit for security vulnerabilities](../../tools/dotnet-restore.md#audit-for-security-vulnerabilities). + +### Template engine + +The [template engine](https://github.com/dotnet/templating) provides a more secure experience in .NET 8 by integrating some of NuGet's security-related features. The improvements include: + +- Prevent downloading packages from `http://` feeds by default. For example, the following command will fail to install the template package because the source URL doesn't use HTTPS. + + `dotnet new install console --add-source "http://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json"` + + You can override this limitation by using the `--force` flag. + +- For `dotnet new`, `dotnet new install`, and `dotnet new update`, check for known vulnerabilities in the template package. If vulnerabilities are found and you wish to proceed, you must use the `--force` flag. + +- For `dotnet new`, provide information about the template package owner. Ownership is verified by the NuGet portal and can be considered a trustworthy characteristic. + +- For `dotnet search` and `dotnet uninstall`, indicate whether a template is installed from a package that's "trusted"—that is, it uses a [reserved prefix](/nuget/nuget-org/id-prefix-reservation). + +### Source Link + +[Source Link](../../../standard/library-guidance/sourcelink.md) is now included in the .NET SDK. The goal is that by bundling Source Link into the SDK, instead of requiring a separate `` for the package, more packages will include this information by default. That information will improve the IDE experience for developers. + +> [!NOTE] +> As a side effect of this change, commit information is included in the `InformationalVersion` value of built libraries and applications, even those that target .NET 7 or an earlier version. For more information, see [Source Link included in the .NET SDK](../../compatibility/sdk/8.0/source-link.md). + +### Source-build SDK + +The Linux distribution-built (source-build) SDK now has the capability to build self-contained applications using the source-build runtime packages. The distribution-specific runtime package is bundled with the source-build SDK. During self-contained deployment, this bundled runtime package will be referenced, thereby enabling the feature for users. + +## Native AOT support + +The option to [publish as Native AOT](../../deploying/native-aot/index.md) was first introduced in .NET 7. Publishing an app with Native AOT creates a fully self-contained version of your app that doesn't need a runtime—everything is included in a single file. .NET 8 brings the following improvements to Native AOT publishing: + +- Adds support for the x64 and Arm64 architectures on *macOS*. +- Reduces the sizes of Native AOT apps on Linux by up to 50%. The following table shows the size of a "Hello World" app published with Native AOT that includes the entire .NET runtime on .NET 7 vs. .NET 8: + + | Operating system | .NET 7 | .NET 8 | + |-----------------------------------------|---------|---------| + | Linux x64 (with `-p:StripSymbols=true`) | 3.76 MB | 1.84 MB | + | Windows x64 | 2.85 MB | 1.77 MB | + +- Lets you specify an optimization preference: size or speed. By default, the compiler chooses to generate fast code while being mindful of the size of the application. However, you can use the `` MSBuild property to optimize specifically for one or the other. For more information, see [Optimize AOT deployments](../../deploying/native-aot/optimizing.md). + +### Console app template + +The default console app template now includes support for AOT out-of-the-box. To create a project that's configured for AOT compilation, just run `dotnet new console --aot`. The project configuration added by `--aot` has three effects: + +- Generates a native self-contained executable with Native AOT when you publish the project, for example, with `dotnet publish` or Visual Studio. +- Enables compatibility analyzers for trimming, AOT, and single file. These analyzers alert you to potentially problematic parts of your project (if there are any). +- Enables debug-time emulation of AOT so that when you debug your project without AOT compilation, you get a similar experience to AOT. For example, if you use in a NuGet package that wasn't annotated for AOT (and therefore was missed by the compatibility analyzer), the emulation means you won't have any surprises when you try to publish the project with AOT. + +### Target iOS-like platforms with Native AOT + +.NET 8 starts the work to enable Native AOT support for iOS-like platforms. You can now build and run .NET iOS and .NET MAUI applications with Native AOT on the following platforms: + +- `ios` +- `iossimulator` +- `maccatalyst` +- `tvos` +- `tvossimulator` + +Preliminary testing shows that app size on disk decreases by about 35% for .NET iOS apps that use Native AOT instead of Mono. App size on disk for .NET MAUI iOS apps decreases up to 50%. Additionally, the startup time is also faster. .NET iOS apps have about 28% faster startup time, while .NET MAUI iOS apps have about 50% better startup performance compared to Mono. The .NET 8 support is experimental and only the first step for the feature as a whole. For more information, see the [.NET 8 Performance Improvements in .NET MAUI blog post](https://devblogs.microsoft.com/dotnet/dotnet-8-performance-improvements-in-dotnet-maui/). + +Native AOT support is available as an opt-in feature intended for app deployment; Mono is still the default runtime for app development and deployment. To build and run a .NET MAUI application with Native AOT on an iOS device, use `dotnet workload install maui` to install the .NET MAUI workload and `dotnet new maui -n HelloMaui` to create the app. Then, set the MSBuild property `PublishAot` to `true` in the project file. + +```xml + + true + +``` + +When you set the required property and run `dotnet publish` as shown in the following example, the app will be deployed by using Native AOT. + +```dotnetcli +dotnet publish -f net8.0-ios -c Release -r ios-arm64 /t:Run +``` + +#### Limitations + +Not all iOS features are compatible with Native AOT. Similarly, not all libraries commonly used in iOS are compatible with NativeAOT. And in addition to the existing [limitations of Native AOT deployment](../../deploying/native-aot/index.md#limitations-of-native-aot-deployment), the following list shows some of the other limitations when targeting iOS-like platforms: + +- Using Native AOT is only enabled during app deployment (`dotnet publish`). +- Managed code debugging is only supported with Mono. +- Compatibility with the .NET MAUI framework is limited. + +## AOT compilation for Android apps + +To decrease app size, .NET and .NET MAUI apps that target Android use *profiled* ahead-of-time (AOT) compilation mode when they're built in Release mode. Profiled AOT compilation affects fewer methods than regular AOT compilation. .NET 8 introduces the `` property that lets you opt-in to further AOT compilation for Android apps to decrease app size even more. + +```xml + + true + +``` + +By default, setting `AndroidStripILAfterAOT` to `true` overrides the default `AndroidEnableProfiledAot` setting, allowing (nearly) all methods that were AOT-compiled to be trimmed. You can also use profiled AOT and IL stripping together by explicitly setting both properties to `true`: + +```xml + + true + true + +``` + +## Cross-built Windows apps + +When you build apps that target Windows on non-Windows platforms, the resulting executable is now updated with any specified Win32 resources—for example, application icon, manifest, version information. + +Previously, applications had to be built on Windows in order to have such resources. Fixing this gap in cross-building support has been a popular request, as it was a significant pain point affecting both infrastructure complexity and resource usage. + +## .NET on Linux + +### Minimum support baselines for Linux + +The minimum support baselines for Linux have been updated for .NET 8. .NET is built targeting Ubuntu 16.04, for all architectures. That's primarily important for defining the minimum `glibc` version for .NET 8. .NET 8 will fail to start on distro versions that include an older glibc, such as Ubuntu 14.04 or Red Hat Enterprise Linux 7. + +For more information, see [Red Hat Enterprise Linux Family support](https://github.com/dotnet/core/blob/main/linux-support.md#red-hat-enterprise-linux-family-support). + +### Build your own .NET on Linux + +In previous .NET versions, you could build .NET from source, but it required you to create a "source tarball" from the [dotnet/installer](https://github.com/dotnet/installer) repo commit that corresponded to a release. In .NET 8, that's no longer necessary and you can build .NET on Linux directly from the [dotnet/dotnet](https://github.com/dotnet/dotnet) repository. That repo uses [dotnet/source-build](https://github.com/dotnet/source-build) to build .NET runtimes, tools, and SDKs. This is the same build that Red Hat and Canonical use to build .NET. + +Building in a container is the easiest approach for most people, since the `dotnet-buildtools/prereqs` container images contain all the required dependencies. For more information, see the [build instructions](https://github.com/dotnet/dotnet#building). + +### NuGet signature verification + +Starting in .NET 8, NuGet verifies signed packages on Linux by default. NuGet continues to verify signed packages on Windows as well. + +Most users shouldn't notice the verification. However, if you have an existing root certificate bundle located at */etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem*, you may see trust failures accompanied by [warning NU3042](/nuget/reference/errors-and-warnings/nu3042). + +You can opt out of verification by setting the environment variable `DOTNET_NUGET_SIGNATURE_VERIFICATION` to `false`. + +## Code analysis + +.NET 8 includes several new code analyzers and fixers to help verify that you're using .NET library APIs correctly and efficiently. The following table summarizes the new analyzers. + +| Rule ID | Category | Description | +|--|--|--| +| CA1856 | Performance | Fires when the attribute is not applied correctly on a parameter. | +| CA1857 | Performance | Fires when a parameter is annotated with but the provided argument isn't a constant. | +| [CA1858](../../../fundamentals/code-analysis/quality-rules/ca1858.md) | Performance | To determine whether a string starts with a given prefix, it's better to call than to call and then compare the result with zero. | +| [CA1859](../../../fundamentals/code-analysis/quality-rules/ca1859.md) | Performance | This rule recommends upgrading the type of specific local variables, fields, properties, method parameters, and method return types from interface or abstract types to concrete types when possible. Using concrete types leads to higher quality generated code. | +| [CA1860](../../../fundamentals/code-analysis/quality-rules/ca1860.md) | Performance | To determine whether a collection type has any elements, it's better to use `Length`, `Count`, or `IsEmpty` than to call . | +| [CA1861](../../../fundamentals/code-analysis/quality-rules/ca1861.md) | Performance | Constant arrays passed as arguments aren't reused when called repeatedly, which implies a new array is created each time. To improve performance, consider extracting the array to a static readonly field. | +| [CA1865-CA1867](../../../fundamentals/code-analysis/quality-rules/ca1865-ca1867.md) | Performance | The char overload is a better-performing overload for a string with a single char. | +| CA2021 | Reliability | and require compatible types to function correctly. Widening and user-defined conversions aren't supported with generic types. | +| CA1510-CA1513 | Maintainability | Throw helpers are simpler and more efficient than an `if` block constructing a new exception instance. These four analyzers were created for the following exceptions: , , and . | + +## Diagnostics + +### C# Hot Reload supports modifying generics + +Starting in .NET 8, C# Hot Reload [supports modifying generic types and generic methods](https://devblogs.microsoft.com/dotnet/hot-reload-generics/). When you debug console, desktop, mobile, or WebAssembly applications with Visual Studio, you can apply changes to generic classes and generic methods in C# code or Razor pages. For more information, see the [full list of edits supported by Roslyn](https://github.com/dotnet/roslyn/blob/main/docs/wiki/EnC-Supported-Edits.md). + +### See also + +- [What's new in .NET 8](overview.md) diff --git a/docs/csharp/whats-new/csharp-12.md b/docs/csharp/whats-new/csharp-12.md index 1c0f26507ad07..928c5b4b95577 100644 --- a/docs/csharp/whats-new/csharp-12.md +++ b/docs/csharp/whats-new/csharp-12.md @@ -31,9 +31,9 @@ Collection expressions introduce a new terse syntax to create common collection Several collection-like types can be created without requiring external BCL support. These types are: -* Array types, such as `int[]`. -* and . -* Types that support collection initializers, such as . +- Array types, such as `int[]`. +- and . +- Types that support collection initializers, such as . The following examples show uses of collection expressions: @@ -150,4 +150,4 @@ If you're interested in experimenting with interceptors, you can learn more by r ## See also -- [What's new in .NET 8](../../core/whats-new/dotnet-8.md) +- [What's new in .NET 8](../../core/whats-new/dotnet-8/overview.md) diff --git a/docs/fundamentals/index.yml b/docs/fundamentals/index.yml index eb610d517db76..64c792d3c351e 100644 --- a/docs/fundamentals/index.yml +++ b/docs/fundamentals/index.yml @@ -38,7 +38,7 @@ landingContent: - linkListType: whats-new links: - text: What's new in .NET 8 - url: ../core/whats-new/dotnet-8.md + url: ../core/whats-new/dotnet-8/overview.md - text: What's new in .NET 7 url: ../core/whats-new/dotnet-7.md - text: What's new in .NET 6 diff --git a/docs/fundamentals/toc.yml b/docs/fundamentals/toc.yml index 70c2e7fb0b47a..701ca305114d6 100644 --- a/docs/fundamentals/toc.yml +++ b/docs/fundamentals/toc.yml @@ -1,1465 +1,1474 @@ items: -- name: .NET fundamentals documentation - href: index.yml -- name: Get started - items: - - name: Hello World - href: ../core/get-started.md - - name: Get started tutorials - href: ../standard/get-started.md - - name: .NET Live TV - href: https://dotnet.microsoft.com/live - - name: How to install + - name: .NET fundamentals documentation + href: index.yml + - name: Get started items: - - name: Overview - href: ../core/install/index.yml - - name: Install on Windows - href: ../core/install/windows.md - - name: Install on macOS - href: ../core/install/macos.md - - name: Install on Linux - items: - - name: Overview - href: ../core/install/linux.md - - name: Ubuntu + - name: Hello World + href: ../core/get-started.md + - name: Get started tutorials + href: ../standard/get-started.md + - name: .NET Live TV + href: https://dotnet.microsoft.com/live + - name: How to install items: - - name: Overview - href: ../core/install/linux-ubuntu.md - - name: "23.10" - href: ../core/install/linux-ubuntu-2310.md - - name: "23.04" - href: ../core/install/linux-ubuntu-2304.md - - name: "22.10" - href: ../core/install/linux-ubuntu-2210.md - - name: "22.04" - href: ../core/install/linux-ubuntu-2204.md - - name: "20.04" - href: ../core/install/linux-ubuntu-2004.md - - name: "18.04" - href: ../core/install/linux-ubuntu-1804.md - - name: "16.04" - href: ../core/install/linux-ubuntu-1604.md - - name: Alpine - href: ../core/install/linux-alpine.md - - name: CentOS - href: ../core/install/linux-centos.md - - name: CentOS Stream - href: ../core/install/linux-rhel.md#supported-distributions - - name: Debian - href: ../core/install/linux-debian.md - - name: Fedora - href: ../core/install/linux-fedora.md - - name: OpenSUSE - href: ../core/install/linux-opensuse.md - - name: Red Hat Enterprise Linux - href: ../core/install/linux-rhel.md - - name: SLES - href: ../core/install/linux-sles.md - - name: Installation script & binaries - href: ../core/install/linux-scripted-manual.md - - name: Remove outdated runtimes and SDKs - href: ../core/install/remove-runtime-sdk-versions.md - - name: Manage .NET templates - href: ../core/install/templates.md - - name: macOS Notarization issues - href: ../core/install/macos-notarization-issues.md - - name: Troubleshoot .NET Package mix ups on Linux - href: ../core/install/linux-package-mixup.md - - name: How to check .NET versions - href: ../core/install/how-to-detect-installed-versions.md - - name: Install localized IntelliSense - href: ../core/install/localized-intellisense.md -- name: Overview - items: - - name: Introduction to .NET - href: ../core/introduction.md - - name: Build apps with .NET - href: ../core/apps.md - - name: .NET languages - href: ../fundamentals/languages.md - - name: .NET implementations - href: ../fundamentals/implementations.md - - name: .NET class libraries - href: ../standard/class-libraries.md - - name: .NET Standard overview - href: ../standard/net-standard.md - - name: Releases, patches, and support - href: ../core/releases-and-support.md - - name: Ecma standards - href: ../fundamentals/standards.md - - name: .NET glossary - href: ../standard/glossary.md - - name: Tutorials - items: - - name: .NET 6 template changes - href: ../core/tutorials/top-level-templates.md - - name: Use Visual Studio - items: - - name: Create a console app - href: ../core/tutorials/with-visual-studio.md - displayName: tutorials, visual studio, vs - - name: Debug an app - href: ../core/tutorials/debugging-with-visual-studio.md - displayName: tutorials, visual studio, vs - - name: Publish an app - href: ../core/tutorials/publishing-with-visual-studio.md - displayName: tutorials, visual studio, vs - - name: Create a library - href: ../core/tutorials/library-with-visual-studio.md - displayName: tutorials, visual studio, vs - - name: Unit test a library - href: ../core/tutorials/testing-library-with-visual-studio.md - displayName: tutorials, visual studio, vs - - name: Install and use a package - href: /nuget/quickstart/install-and-use-a-package-in-visual-studio?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json - displayName: tutorials, visual studio, vs - - name: Create and publish a package - href: /nuget/quickstart/create-and-publish-a-package-using-visual-studio?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json - displayName: tutorials, visual studio, vs - - name: Use Visual Studio Code - items: - - name: Create a console app - href: ../core/tutorials/with-visual-studio-code.md - displayName: tutorials, visual studio code, vs code, cli - - name: Debug an app - href: ../core/tutorials/debugging-with-visual-studio-code.md - displayName: tutorials, visual studio code, vs code - - name: Publish an app - href: ../core/tutorials/publishing-with-visual-studio-code.md - displayName: tutorials, visual studio code, vs code - - name: Create a library - href: ../core/tutorials/library-with-visual-studio-code.md - displayName: tutorials, visual studio code, vs code - - name: Unit test a library - href: ../core/tutorials/testing-library-with-visual-studio-code.md - displayName: tutorials, visual studio code, vs code - - name: Install and use a package - href: /nuget/quickstart/install-and-use-a-package-using-the-dotnet-cli?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json - displayName: tutorials, cli - - name: Create and publish a package - href: /nuget/quickstart/create-and-publish-a-package-using-the-dotnet-cli?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json - displayName: tutorials - - name: Use Visual Studio for Mac - items: - - name: Create a console app - href: ../core/tutorials/with-visual-studio-mac.md - displayName: tutorials, visual studio for mac, vs for mac, cli - - name: Debug an app - href: ../core/tutorials/debugging-with-visual-studio-mac.md - displayName: tutorials, visual studio for mac, vs for mac - - name: Publish an app - href: ../core/tutorials/publishing-with-visual-studio-mac.md - displayName: tutorials, visual studio for mac, vs for mac - - name: Create a library - href: ../core/tutorials/library-with-visual-studio-mac.md - displayName: tutorials, visual studio for mac, vs for mac - - name: Unit test a library - href: ../core/tutorials/testing-library-with-visual-studio-mac.md - displayName: tutorials, visual studio for mac, vs for mac - - name: Install and use a package - href: /nuget/quickstart/install-and-use-a-package-in-visual-studio-mac?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json - displayName: tutorials, visual studio for mac, vs for mac - - name: More tutorials - href: ../core/tutorials/index.md -- name: What's new in .NET - items: - - name: .NET 8 - items: - - name: What's new - href: ../core/whats-new/dotnet-8.md - - name: Breaking changes - href: ../core/compatibility/8.0.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: .NET 7 - items: - - name: What's new - href: ../core/whats-new/dotnet-7.md - - name: Breaking changes - href: ../core/compatibility/7.0.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: .NET 6 - items: - - name: What's new - href: ../core/whats-new/dotnet-6.md - - name: Breaking changes - href: ../core/compatibility/6.0.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: .NET 5 - items: - - name: What's new - href: ../core/whats-new/dotnet-5.md - - name: Breaking changes - href: ../core/compatibility/5.0.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: .NET Core 3.1 - items: - - name: What's new - href: ../core/whats-new/dotnet-core-3-1.md - - name: Breaking changes - href: ../core/compatibility/3.1.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: .NET Core 3.0 - items: - - name: What's new - href: ../core/whats-new/dotnet-core-3-0.md - - name: Breaking changes - href: ../core/compatibility/3.0.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: .NET Core 2.2 - href: ../core/whats-new/dotnet-core-2-2.md - - name: .NET Core 2.1 + - name: Overview + href: ../core/install/index.yml + - name: Install on Windows + href: ../core/install/windows.md + - name: Install on macOS + href: ../core/install/macos.md + - name: Install on Linux + items: + - name: Overview + href: ../core/install/linux.md + - name: Ubuntu + items: + - name: Overview + href: ../core/install/linux-ubuntu.md + - name: "23.10" + href: ../core/install/linux-ubuntu-2310.md + - name: "23.04" + href: ../core/install/linux-ubuntu-2304.md + - name: "22.10" + href: ../core/install/linux-ubuntu-2210.md + - name: "22.04" + href: ../core/install/linux-ubuntu-2204.md + - name: "20.04" + href: ../core/install/linux-ubuntu-2004.md + - name: "18.04" + href: ../core/install/linux-ubuntu-1804.md + - name: "16.04" + href: ../core/install/linux-ubuntu-1604.md + - name: Alpine + href: ../core/install/linux-alpine.md + - name: CentOS + href: ../core/install/linux-centos.md + - name: CentOS Stream + href: ../core/install/linux-rhel.md#supported-distributions + - name: Debian + href: ../core/install/linux-debian.md + - name: Fedora + href: ../core/install/linux-fedora.md + - name: OpenSUSE + href: ../core/install/linux-opensuse.md + - name: Red Hat Enterprise Linux + href: ../core/install/linux-rhel.md + - name: SLES + href: ../core/install/linux-sles.md + - name: Installation script & binaries + href: ../core/install/linux-scripted-manual.md + - name: Remove outdated runtimes and SDKs + href: ../core/install/remove-runtime-sdk-versions.md + - name: Manage .NET templates + href: ../core/install/templates.md + - name: macOS Notarization issues + href: ../core/install/macos-notarization-issues.md + - name: Troubleshoot .NET Package mix ups on Linux + href: ../core/install/linux-package-mixup.md + - name: How to check .NET versions + href: ../core/install/how-to-detect-installed-versions.md + - name: Install localized IntelliSense + href: ../core/install/localized-intellisense.md + - name: Overview items: - - name: What's new - href: ../core/whats-new/dotnet-core-2-1.md - - name: Breaking changes - href: ../core/compatibility/2.1.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: .NET Core 2.0 - href: ../core/whats-new/dotnet-core-2-0.md - - name: .NET Standard - href: ../standard/whats-new/whats-new-in-dotnet-standard.md -- name: Fundamental coding components - items: - - name: Base types overview + - name: Introduction to .NET + href: ../core/introduction.md + - name: Build apps with .NET + href: ../core/apps.md + - name: .NET languages + href: ../fundamentals/languages.md + - name: .NET implementations + href: ../fundamentals/implementations.md + - name: .NET class libraries + href: ../standard/class-libraries.md + - name: .NET Standard overview + href: ../standard/net-standard.md + - name: Releases, patches, and support + href: ../core/releases-and-support.md + - name: Ecma standards + href: ../fundamentals/standards.md + - name: .NET glossary + href: ../standard/glossary.md + - name: Tutorials + items: + - name: .NET 6 template changes + href: ../core/tutorials/top-level-templates.md + - name: Use Visual Studio + items: + - name: Create a console app + href: ../core/tutorials/with-visual-studio.md + displayName: tutorials, visual studio, vs + - name: Debug an app + href: ../core/tutorials/debugging-with-visual-studio.md + displayName: tutorials, visual studio, vs + - name: Publish an app + href: ../core/tutorials/publishing-with-visual-studio.md + displayName: tutorials, visual studio, vs + - name: Create a library + href: ../core/tutorials/library-with-visual-studio.md + displayName: tutorials, visual studio, vs + - name: Unit test a library + href: ../core/tutorials/testing-library-with-visual-studio.md + displayName: tutorials, visual studio, vs + - name: Install and use a package + href: /nuget/quickstart/install-and-use-a-package-in-visual-studio?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json + displayName: tutorials, visual studio, vs + - name: Create and publish a package + href: /nuget/quickstart/create-and-publish-a-package-using-visual-studio?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json + displayName: tutorials, visual studio, vs + - name: Use Visual Studio Code + items: + - name: Create a console app + href: ../core/tutorials/with-visual-studio-code.md + displayName: tutorials, visual studio code, vs code, cli + - name: Debug an app + href: ../core/tutorials/debugging-with-visual-studio-code.md + displayName: tutorials, visual studio code, vs code + - name: Publish an app + href: ../core/tutorials/publishing-with-visual-studio-code.md + displayName: tutorials, visual studio code, vs code + - name: Create a library + href: ../core/tutorials/library-with-visual-studio-code.md + displayName: tutorials, visual studio code, vs code + - name: Unit test a library + href: ../core/tutorials/testing-library-with-visual-studio-code.md + displayName: tutorials, visual studio code, vs code + - name: Install and use a package + href: /nuget/quickstart/install-and-use-a-package-using-the-dotnet-cli?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json + displayName: tutorials, cli + - name: Create and publish a package + href: /nuget/quickstart/create-and-publish-a-package-using-the-dotnet-cli?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json + displayName: tutorials + - name: Use Visual Studio for Mac + items: + - name: Create a console app + href: ../core/tutorials/with-visual-studio-mac.md + displayName: tutorials, visual studio for mac, vs for mac, cli + - name: Debug an app + href: ../core/tutorials/debugging-with-visual-studio-mac.md + displayName: tutorials, visual studio for mac, vs for mac + - name: Publish an app + href: ../core/tutorials/publishing-with-visual-studio-mac.md + displayName: tutorials, visual studio for mac, vs for mac + - name: Create a library + href: ../core/tutorials/library-with-visual-studio-mac.md + displayName: tutorials, visual studio for mac, vs for mac + - name: Unit test a library + href: ../core/tutorials/testing-library-with-visual-studio-mac.md + displayName: tutorials, visual studio for mac, vs for mac + - name: Install and use a package + href: /nuget/quickstart/install-and-use-a-package-in-visual-studio-mac?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json + displayName: tutorials, visual studio for mac, vs for mac + - name: More tutorials + href: ../core/tutorials/index.md + - name: What's new in .NET items: - - name: Common type system - href: ../standard/base-types/common-type-system.md - - name: Language independence - href: ../standard/language-independence.md - - name: Type conversion - items: - - name: Overview - displayName: type conversion - href: ../standard/base-types/type-conversion.md - - name: Type conversion tables - href: ../standard/base-types/conversion-tables.md - - name: Supplemental API remarks + - name: .NET 8 items: - - name: Convert class - href: runtime-libraries/system-convert.md - - name: Choose between anonymous and tuple types - href: ../standard/base-types/choosing-between-anonymous-and-tuple.md - - name: Class library overview - href: ../standard/class-library-overview.md - - name: Supplemental API remarks - items: - - name: System.Object class + - name: What's new + items: + - name: Overview + href: ../core/whats-new/dotnet-8/overview.md + displayName: whats new, what's new + - name: Runtime + href: ../core/whats-new/dotnet-8/runtime.md + - name: SDK and tooling + href: ../core/whats-new/dotnet-8/sdk.md + - name: Containers + href: ../core/whats-new/dotnet-8/containers.md + - name: Breaking changes + href: ../core/compatibility/8.0.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: .NET 7 items: - - name: Type remarks - href: runtime-libraries/system-object.md - displayName: object - - name: Equals method - href: runtime-libraries/system-object-equals.md - - name: Finalize method - href: runtime-libraries/system-object-finalize.md - - name: GetHashCode method - href: runtime-libraries/system-object-gethashcode.md - - name: ToString method - href: runtime-libraries/system-object-tostring.md - - name: Nullability - items: - - name: Supplemental API remarks + - name: What's new + href: ../core/whats-new/dotnet-7.md + - name: Breaking changes + href: ../core/compatibility/7.0.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: .NET 6 items: - - name: Nullable class - href: runtime-libraries/system-nullable.md - - name: Nullable class - href: runtime-libraries/system-nullable{t}.md - - name: Generic types - items: - - name: Overview - href: ../standard/generics/index.md - - name: Intro to generic types - href: ../standard/generics.md - - name: Generic collections - href: ../standard/generics/collections.md - - name: Generic delegates for manipulating arrays and lists - href: ../standard/generics/delegates-for-manipulating-arrays-and-lists.md - - name: Generic math - href: ../standard/generics/math.md - - name: Generic interfaces - href: ../standard/generics/interfaces.md - - name: Covariance and contravariance - href: ../standard/generics/covariance-and-contravariance.md - - name: Collections and data structures - items: - - name: Overview - href: ../standard/collections/index.md - displayName: collections, data structures - - name: Select a collection class - href: ../standard/collections/selecting-a-collection-class.md - - name: Commonly used collection types - href: ../standard/collections/commonly-used-collection-types.md - - name: When to use generic collections - href: ../standard/collections/when-to-use-generic-collections.md - - name: Comparisons and sorts within collections - href: ../standard/collections/comparisons-and-sorts-within-collections.md - - name: Sorted collection types - href: ../standard/collections/sorted-collection-types.md - - name: Hashtable and Dictionary types - href: ../standard/collections/hashtable-and-dictionary-collection-types.md - - name: Thread-safe collections - href: ../standard/collections/thread-safe/index.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json - - name: Supplemental API remarks - items: - - name: HashSet class - href: runtime-libraries/system-collections-generic-hashset{t}.md - - name: KeyedCollection class + - name: What's new + href: ../core/whats-new/dotnet-6.md + - name: Breaking changes + href: ../core/compatibility/6.0.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: .NET 5 items: - - name: ChangeItemKey method - href: runtime-libraries/system-collections-objectmodel-keyedcollection{tkey,titem}-changeitemkey.md - - name: List class - href: runtime-libraries/system-collections-generic-list{t}.md - - name: ObservableCollection class - href: runtime-libraries/system-collections-objectmodel-observablecollection{t}.md - - name: Delegates and lambdas - items: - - name: Overview - href: ../standard/delegates-lambdas.md - displayName: delegates,lambdas - - name: Supplemental API remarks - items: - - name: Delegate.CreateDelegate method - href: runtime-libraries/system-delegate-createdelegate.md - - name: Enumerations - items: - - name: Supplemental API remarks - items: - - name: Enum class - href: runtime-libraries/system-enum.md - - name: FlagsAttribute class - href: runtime-libraries/system-flagsattribute.md - - name: Events - items: - - name: Overview - href: ../standard/events/index.md - displayName: events - - name: Raise and consume events - href: ../standard/events/how-to-raise-and-consume-events.md - - name: Handle multiple events using event properties - href: ../standard/events/how-to-handle-multiple-events-using-event-properties.md - - name: Observer design pattern - items: - - name: Overview - href: ../standard/events/observer-design-pattern.md - displayName: Observer design pattern - - name: Best practices - href: ../standard/events/observer-design-pattern-best-practices.md - - name: "How to: Implement a provider" - href: ../standard/events/how-to-implement-a-provider.md - - name: "How to: Implement an observer" - href: ../standard/events/how-to-implement-an-observer.md - - name: Exceptions - items: - - name: Overview - href: ../standard/exceptions/index.md - displayName: exceptions - - name: Exception class - href: ../standard/exceptions/exception-class-and-properties.md - - name: How-tos - items: - - name: Use the try-catch block to catch exceptions - href: ../standard/exceptions/how-to-use-the-try-catch-block-to-catch-exceptions.md - - name: Use specific exceptions in a catch block - href: ../standard/exceptions/how-to-use-specific-exceptions-in-a-catch-block.md - - name: Explicitly throw exceptions - href: ../standard/exceptions/how-to-explicitly-throw-exceptions.md - - name: Create user-defined exceptions - href: ../standard/exceptions/how-to-create-user-defined-exceptions.md - - name: Create user-defined exceptions with localized exception messages - href: ../standard/exceptions/how-to-create-localized-exception-messages.md - - name: Use finally blocks - href: ../standard/exceptions/how-to-use-finally-blocks.md - - name: Use user-filtered exception handlers - href: ../standard/exceptions/using-user-filtered-exception-handlers.md - - name: Handle COM interop exceptions - href: ../standard/exceptions/handling-com-interop-exceptions.md - - name: Best practices - href: ../standard/exceptions/best-practices-for-exceptions.md - - name: Supplemental API remarks - items: - - name: AccessViolationException class - href: runtime-libraries/system-accessviolationexception.md - - name: Exception class + - name: What's new + href: ../core/whats-new/dotnet-5.md + - name: Breaking changes + href: ../core/compatibility/5.0.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: .NET Core 3.1 items: - - name: Type remarks - href: runtime-libraries/system-exception.md - displayName: exception - - name: Data property - href: runtime-libraries/system-exception-data.md - - name: Message property - href: runtime-libraries/system-exception-message.md - - name: InvalidCastException class - href: runtime-libraries/system-invalidcastexception.md - - name: InvalidOperationException class - href: runtime-libraries/system-invalidoperationexception.md - - name: NotImplementedException class - href: runtime-libraries/system-notimplementedexception.md - - name: NotSupportedException class - href: runtime-libraries/system-notsupportedexception.md - - name: TypeInitializationException class - href: runtime-libraries/system-typeinitializationexception.md - - name: Numeric types - items: - - name: Overview - displayName: numeric types - href: ../standard/numerics.md - - name: Supplemental API remarks - items: - - name: Boolean struct - href: runtime-libraries/system-boolean.md - - name: Byte struct - href: runtime-libraries/system-byte.md - - name: Decimal struct - href: runtime-libraries/system-decimal.md - - name: Double struct + - name: What's new + href: ../core/whats-new/dotnet-core-3-1.md + - name: Breaking changes + href: ../core/compatibility/3.1.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: .NET Core 3.0 items: - - name: Type remarks - href: runtime-libraries/system-double.md - displayName: system.double,double - - name: CompareTo method - href: runtime-libraries/system-double-compareto.md - - name: Equals method - href: runtime-libraries/system-double-equals.md - - name: Epsilon property - href: runtime-libraries/system-double-epsilon.md - - name: Int32 struct - href: runtime-libraries/system-int32.md - - name: Int64 struct - href: runtime-libraries/system-int64.md - - name: BigInteger struct - href: runtime-libraries/system-numerics-biginteger.md - - name: Complex struct - href: runtime-libraries/system-numerics-complex.md - - name: Single struct + - name: What's new + href: ../core/whats-new/dotnet-core-3-0.md + - name: Breaking changes + href: ../core/compatibility/3.0.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: .NET Core 2.2 + href: ../core/whats-new/dotnet-core-2-2.md + - name: .NET Core 2.1 items: - - name: Type remarks - href: runtime-libraries/system-single.md - displayName: single - - name: CompareTo method - href: runtime-libraries/system-single-compareto.md - - name: Epsilon property - href: runtime-libraries/system-single-epsilon.md - - name: Equals method - href: runtime-libraries/system-single-equals.md - - name: Dates, times, and time zones + - name: What's new + href: ../core/whats-new/dotnet-core-2-1.md + - name: Breaking changes + href: ../core/compatibility/2.1.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: .NET Core 2.0 + href: ../core/whats-new/dotnet-core-2-0.md + - name: .NET Standard + href: ../standard/whats-new/whats-new-in-dotnet-standard.md + - name: Fundamental coding components items: - - name: Overview - displayName: dates,times,time zones - href: ../standard/datetime/index.md - - name: Choose which date and time type to use - href: ../standard/datetime/choosing-between-datetime.md - - name: Work with calendars - href: ../standard/datetime/working-with-calendars.md - - name: Use the DateOnly and TimeOnly types - href: ../standard/datetime/how-to-use-dateonly-timeonly.md - - name: Perform arithmetic operations - href: ../standard/datetime/performing-arithmetic-operations.md - - name: "DateTime and DateTimeOffset support in System.Text.Json" - href: ../standard/datetime/system-text-json-support.md - - name: Time zones - items: - - name: Overview - href: ../standard/datetime/time-zone-overview.md - - name: Use time zones in date and time arithmetic - href: ../standard/datetime/use-time-zones-in-arithmetic.md - - name: Convert between DateTime and DateTimeOffset - href: ../standard/datetime/converting-between-datetime-and-offset.md - - name: Convert times between time zones - href: ../standard/datetime/converting-between-time-zones.md - - name: "How to: Resolve ambiguous times" - href: ../standard/datetime/resolve-ambiguous-times.md - - name: "How to: Let users resolve ambiguous times" - href: ../standard/datetime/let-users-resolve-ambiguous-times.md - - name: Instantiate a DateTimeOffset object + - name: Base types overview items: - - name: Overview - href: ../standard/datetime/instantiating-a-datetimeoffset-object.md - - name: Create time zones without adjustment rules - href: ../standard/datetime/create-time-zones-without-adjustment-rules.md - - name: Create time zones with adjustment rules - href: ../standard/datetime/create-time-zones-with-adjustment-rules.md - - name: Time zones defined by the OS + - name: Common type system + href: ../standard/base-types/common-type-system.md + - name: Language independence + href: ../standard/language-independence.md + - name: Type conversion + items: + - name: Overview + displayName: type conversion + href: ../standard/base-types/type-conversion.md + - name: Type conversion tables + href: ../standard/base-types/conversion-tables.md + - name: Supplemental API remarks + items: + - name: Convert class + href: runtime-libraries/system-convert.md + - name: Choose between anonymous and tuple types + href: ../standard/base-types/choosing-between-anonymous-and-tuple.md + - name: Class library overview + href: ../standard/class-library-overview.md + - name: Supplemental API remarks + items: + - name: System.Object class + items: + - name: Type remarks + href: runtime-libraries/system-object.md + displayName: object + - name: Equals method + href: runtime-libraries/system-object-equals.md + - name: Finalize method + href: runtime-libraries/system-object-finalize.md + - name: GetHashCode method + href: runtime-libraries/system-object-gethashcode.md + - name: ToString method + href: runtime-libraries/system-object-tostring.md + - name: Nullability + items: + - name: Supplemental API remarks + items: + - name: Nullable class + href: runtime-libraries/system-nullable.md + - name: Nullable class + href: runtime-libraries/system-nullable{t}.md + - name: Generic types items: - - name: Overview - href: ../standard/datetime/finding-the-time-zones-on-local-system.md - - name: Enumerate time zones present on a computer - href: ../standard/datetime/enumerate-time-zones.md - - name: Access predefined UTC and local time zone objects - href: ../standard/datetime/access-utc-and-local.md - - name: Instantiate a TimeZoneInfo object - href: ../standard/datetime/instantiate-time-zone-info.md - - name: Save and restore time zones + - name: Overview + href: ../standard/generics/index.md + - name: Intro to generic types + href: ../standard/generics.md + - name: Generic collections + href: ../standard/generics/collections.md + - name: Generic delegates for manipulating arrays and lists + href: ../standard/generics/delegates-for-manipulating-arrays-and-lists.md + - name: Generic math + href: ../standard/generics/math.md + - name: Generic interfaces + href: ../standard/generics/interfaces.md + - name: Covariance and contravariance + href: ../standard/generics/covariance-and-contravariance.md + - name: Collections and data structures items: - - name: Overview - href: ../standard/datetime/saving-and-restoring-time-zones.md - - name: Save time zones to an embedded resource - href: ../standard/datetime/save-time-zones-to-an-embedded-resource.md - - name: Restore time zones from an embedded resource - href: ../standard/datetime/restore-time-zones-from-an-embedded-resource.md - - name: Supplemental API remarks - items: - - name: DateTime struct + - name: Overview + href: ../standard/collections/index.md + displayName: collections, data structures + - name: Select a collection class + href: ../standard/collections/selecting-a-collection-class.md + - name: Commonly used collection types + href: ../standard/collections/commonly-used-collection-types.md + - name: When to use generic collections + href: ../standard/collections/when-to-use-generic-collections.md + - name: Comparisons and sorts within collections + href: ../standard/collections/comparisons-and-sorts-within-collections.md + - name: Sorted collection types + href: ../standard/collections/sorted-collection-types.md + - name: Hashtable and Dictionary types + href: ../standard/collections/hashtable-and-dictionary-collection-types.md + - name: Thread-safe collections + href: ../standard/collections/thread-safe/index.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json + - name: Supplemental API remarks + items: + - name: HashSet class + href: runtime-libraries/system-collections-generic-hashset{t}.md + - name: KeyedCollection class + items: + - name: ChangeItemKey method + href: runtime-libraries/system-collections-objectmodel-keyedcollection{tkey,titem}-changeitemkey.md + - name: List class + href: runtime-libraries/system-collections-generic-list{t}.md + - name: ObservableCollection class + href: runtime-libraries/system-collections-objectmodel-observablecollection{t}.md + - name: Delegates and lambdas items: - - name: Type remarks - href: runtime-libraries/system-datetime.md - displayName: datetime - - name: ToBinary method - href: runtime-libraries/system-datetime-tobinary.md - - name: TryParse method - href: runtime-libraries/system-datetime-tryparse.md - - name: TimeSpan struct + - name: Overview + href: ../standard/delegates-lambdas.md + displayName: delegates,lambdas + - name: Supplemental API remarks + items: + - name: Delegate.CreateDelegate method + href: runtime-libraries/system-delegate-createdelegate.md + - name: Enumerations items: - - name: Type remarks - href: runtime-libraries/system-timespan.md - displayName: timespan - - name: Parse method - href: runtime-libraries/system-timespan-parse.md - - name: TryParse method - href: runtime-libraries/system-timespan-tryparse.md - - name: Attributes - items: - - name: Overview - href: ../standard/attributes/index.md - displayName: attributes - - name: Apply attributes - href: ../standard/attributes/applying-attributes.md - - name: Write custom attributes - href: ../standard/attributes/writing-custom-attributes.md - - name: Retrieve information stored in attributes - href: ../standard/attributes/retrieving-information-stored-in-attributes.md - - name: Performance-related types - items: - - name: Memory and span-related types - items: - - name: Overview - href: ../standard/memory-and-spans/index.md - - name: Memory and Span usage guidelines - href: ../standard/memory-and-spans/memory-t-usage-guidelines.md - - name: Supplemental API remarks + - name: Supplemental API remarks + items: + - name: Enum class + href: runtime-libraries/system-enum.md + - name: FlagsAttribute class + href: runtime-libraries/system-flagsattribute.md + - name: Events items: - - name: Span struct - href: runtime-libraries/system-span{t}.md - - name: SIMD-enabled types - href: ../standard/simd.md - - name: Value tuples - href: ../standard/value-tuples.md -- name: Runtime libraries - items: - - name: Overview - href: ../standard/runtime-libraries-overview.md - - name: Format numbers, dates, other types - items: - - name: Overview - href: ../standard/base-types/formatting-types.md - - name: Standard numeric format strings - href: ../standard/base-types/standard-numeric-format-strings.md - - name: Custom numeric format strings - href: ../standard/base-types/custom-numeric-format-strings.md - - name: Standard date and time format strings - href: ../standard/base-types/standard-date-and-time-format-strings.md - - name: Custom date and time format strings - href: ../standard/base-types/custom-date-and-time-format-strings.md - - name: Standard TimeSpan format strings - href: ../standard/base-types/standard-timespan-format-strings.md - - name: Custom TimeSpan format strings - href: ../standard/base-types/custom-timespan-format-strings.md - - name: Enumeration format strings - href: ../standard/base-types/enumeration-format-strings.md - - name: Composite formatting - href: ../standard/base-types/composite-formatting.md - - name: How-tos - items: - - name: Pad a number with leading zeros - href: ../standard/base-types/how-to-pad-a-number-with-leading-zeros.md - - name: Extract the day of the week from a date - href: ../standard/base-types/how-to-extract-the-day-of-the-week-from-a-specific-date.md - - name: Use custom numeric format providers - href: ../standard/base-types/how-to-define-and-use-custom-numeric-format-providers.md - - name: Round-trip date and time values - href: ../standard/base-types/how-to-round-trip-date-and-time-values.md - - name: Display milliseconds in date and time values - href: ../standard/base-types/how-to-display-milliseconds-in-date-and-time-values.md - - name: Display dates in non-Gregorian calendars - href: ../standard/base-types/how-to-display-dates-in-non-gregorian-calendars.md - - name: Work with strings - items: - - name: Character encoding - href: ../standard/base-types/character-encoding-introduction.md - - name: How to use character encoding classes - href: ../standard/base-types/character-encoding.md - - name: Best practices - items: - - name: Comparing strings - href: ../standard/base-types/best-practices-strings.md - - name: Displaying and persisting formatted data - href: ../standard/base-types/best-practices-display-data.md - - name: Behavior changes in .NET 5+ (Windows) - href: ../standard/base-types/string-comparison-net-5-plus.md - - name: Basic string operations - items: - - name: Overview - href: ../standard/base-types/basic-string-operations.md - displayName: string operations - - name: Create new strings - href: ../standard/base-types/creating-new.md - - name: Trim and remove characters - href: ../standard/base-types/trimming.md - - name: Pad strings - href: ../standard/base-types/padding.md - - name: Comparison methods - href: ../standard/base-types/comparing.md - - name: Change case - href: ../standard/base-types/changing-case.md - - name: Separate parts of a string - href: ../standard/base-types/divide-up-strings.md - - name: Use the StringBuilder class - href: ../standard/base-types/stringbuilder.md - - name: "How to: Perform basic string manipulations" - href: ../standard/base-types/basic-manipulations.md - - name: Parse (convert) strings - items: - - name: Overview - href: ../standard/base-types/parsing-strings.md - - name: Parse numeric strings - href: ../standard/base-types/parsing-numeric.md - - name: Parse date and time strings - href: ../standard/base-types/parsing-datetime.md - - name: Parse other strings - href: ../standard/base-types/parsing-other.md - - name: Supplemental API remarks - items: - - name: String class + - name: Overview + href: ../standard/events/index.md + displayName: events + - name: Raise and consume events + href: ../standard/events/how-to-raise-and-consume-events.md + - name: Handle multiple events using event properties + href: ../standard/events/how-to-handle-multiple-events-using-event-properties.md + - name: Observer design pattern + items: + - name: Overview + href: ../standard/events/observer-design-pattern.md + displayName: Observer design pattern + - name: Best practices + href: ../standard/events/observer-design-pattern-best-practices.md + - name: "How to: Implement a provider" + href: ../standard/events/how-to-implement-a-provider.md + - name: "How to: Implement an observer" + href: ../standard/events/how-to-implement-an-observer.md + - name: Exceptions items: - - name: Type remarks - href: runtime-libraries/system-string.md - displayName: string - - name: Constructor - href: runtime-libraries/system-string-ctor.md - - name: Format method - href: runtime-libraries/system-string-format.md - - name: Intern method - href: runtime-libraries/system-string-intern.md - - name: IsNullOrEmpty method - href: runtime-libraries/system-string-isnullorempty.md - - name: Char struct - href: runtime-libraries/system-char.md - - name: StringComparer class - href: runtime-libraries/system-stringcomparer.md - - name: Encoding class + - name: Overview + href: ../standard/exceptions/index.md + displayName: exceptions + - name: Exception class + href: ../standard/exceptions/exception-class-and-properties.md + - name: How-tos + items: + - name: Use the try-catch block to catch exceptions + href: ../standard/exceptions/how-to-use-the-try-catch-block-to-catch-exceptions.md + - name: Use specific exceptions in a catch block + href: ../standard/exceptions/how-to-use-specific-exceptions-in-a-catch-block.md + - name: Explicitly throw exceptions + href: ../standard/exceptions/how-to-explicitly-throw-exceptions.md + - name: Create user-defined exceptions + href: ../standard/exceptions/how-to-create-user-defined-exceptions.md + - name: Create user-defined exceptions with localized exception messages + href: ../standard/exceptions/how-to-create-localized-exception-messages.md + - name: Use finally blocks + href: ../standard/exceptions/how-to-use-finally-blocks.md + - name: Use user-filtered exception handlers + href: ../standard/exceptions/using-user-filtered-exception-handlers.md + - name: Handle COM interop exceptions + href: ../standard/exceptions/handling-com-interop-exceptions.md + - name: Best practices + href: ../standard/exceptions/best-practices-for-exceptions.md + - name: Supplemental API remarks + items: + - name: AccessViolationException class + href: runtime-libraries/system-accessviolationexception.md + - name: Exception class + items: + - name: Type remarks + href: runtime-libraries/system-exception.md + displayName: exception + - name: Data property + href: runtime-libraries/system-exception-data.md + - name: Message property + href: runtime-libraries/system-exception-message.md + - name: InvalidCastException class + href: runtime-libraries/system-invalidcastexception.md + - name: InvalidOperationException class + href: runtime-libraries/system-invalidoperationexception.md + - name: NotImplementedException class + href: runtime-libraries/system-notimplementedexception.md + - name: NotSupportedException class + href: runtime-libraries/system-notsupportedexception.md + - name: TypeInitializationException class + href: runtime-libraries/system-typeinitializationexception.md + - name: Numeric types items: - - name: Type remarks - href: runtime-libraries/system-text-encoding.md - displayName: encoding - - name: Default property - href: runtime-libraries/system-text-encoding-default.md - - name: Regex class + - name: Overview + displayName: numeric types + href: ../standard/numerics.md + - name: Supplemental API remarks + items: + - name: Boolean struct + href: runtime-libraries/system-boolean.md + - name: Byte struct + href: runtime-libraries/system-byte.md + - name: Decimal struct + href: runtime-libraries/system-decimal.md + - name: Double struct + items: + - name: Type remarks + href: runtime-libraries/system-double.md + displayName: system.double,double + - name: CompareTo method + href: runtime-libraries/system-double-compareto.md + - name: Equals method + href: runtime-libraries/system-double-equals.md + - name: Epsilon property + href: runtime-libraries/system-double-epsilon.md + - name: Int32 struct + href: runtime-libraries/system-int32.md + - name: Int64 struct + href: runtime-libraries/system-int64.md + - name: BigInteger struct + href: runtime-libraries/system-numerics-biginteger.md + - name: Complex struct + href: runtime-libraries/system-numerics-complex.md + - name: Single struct + items: + - name: Type remarks + href: runtime-libraries/system-single.md + displayName: single + - name: CompareTo method + href: runtime-libraries/system-single-compareto.md + - name: Epsilon property + href: runtime-libraries/system-single-epsilon.md + - name: Equals method + href: runtime-libraries/system-single-equals.md + - name: Dates, times, and time zones items: - - name: Type remarks - href: runtime-libraries/system-text-regularexpressions-regex.md - displayName: regex - - name: Match method - href: runtime-libraries/system-text-regularexpressions-regex-match.md - - name: Rune struct - href: runtime-libraries/system-text-rune.md - - name: StringBuilder class - href: runtime-libraries/system-text-stringbuilder.md - - name: Regular expressions - items: - - name: Overview - href: ../standard/base-types/regular-expressions.md - displayName: regular expressions - - name: Source generation - href: ../standard/base-types/regular-expression-source-generators.md - displayName: regular expressions,advanced,design concepts,source generators,algorithmic reduction,regex - - name: Language reference - items: - - name: Overview - href: ../standard/base-types/regular-expression-language-quick-reference.md - - name: Character escapes - href: ../standard/base-types/character-escapes-in-regular-expressions.md - - name: Character classes - href: ../standard/base-types/character-classes-in-regular-expressions.md - - name: Anchors - href: ../standard/base-types/anchors-in-regular-expressions.md - - name: Grouping constructs - href: ../standard/base-types/grouping-constructs-in-regular-expressions.md - - name: Quantifiers - href: ../standard/base-types/quantifiers-in-regular-expressions.md - - name: Backreference constructs - href: ../standard/base-types/backreference-constructs-in-regular-expressions.md - - name: Alternation constructs - href: ../standard/base-types/alternation-constructs-in-regular-expressions.md - - name: Substitutions - href: ../standard/base-types/substitutions-in-regular-expressions.md - - name: Regular expression options - href: ../standard/base-types/regular-expression-options.md - - name: Miscellaneous constructs - href: ../standard/base-types/miscellaneous-constructs-in-regular-expressions.md - - name: Best practices for regular expressions - href: ../standard/base-types/best-practices-regex.md - - name: Regular expression object model - href: ../standard/base-types/the-regular-expression-object-model.md - - name: Regular expression behavior - items: - - name: Overview - href: ../standard/base-types/details-of-regular-expression-behavior.md - - name: Backtracking - href: ../standard/base-types/backtracking-in-regular-expressions.md - - name: Compilation and reuse - href: ../standard/base-types/compilation-and-reuse-in-regular-expressions.md - - name: Thread safety - href: ../standard/base-types/thread-safety-in-regular-expressions.md - - name: Examples - items: - - name: Scan for HREFs - href: ../standard/base-types/regular-expression-example-scanning-for-hrefs.md - - name: Change date formats - href: ../standard/base-types/regular-expression-example-changing-date-formats.md - - name: Extract a protocol and port number from a URL - href: ../standard/base-types/how-to-extract-a-protocol-and-port-number-from-a-url.md - - name: Strip invalid characters from a string - href: ../standard/base-types/how-to-strip-invalid-characters-from-a-string.md - - name: Verify that strings are in valid email format - href: ../standard/base-types/how-to-verify-that-strings-are-in-valid-email-format.md - - name: Serialization + - name: Overview + displayName: dates,times,time zones + href: ../standard/datetime/index.md + - name: Choose which date and time type to use + href: ../standard/datetime/choosing-between-datetime.md + - name: Work with calendars + href: ../standard/datetime/working-with-calendars.md + - name: Use the DateOnly and TimeOnly types + href: ../standard/datetime/how-to-use-dateonly-timeonly.md + - name: Perform arithmetic operations + href: ../standard/datetime/performing-arithmetic-operations.md + - name: "DateTime and DateTimeOffset support in System.Text.Json" + href: ../standard/datetime/system-text-json-support.md + - name: Time zones + items: + - name: Overview + href: ../standard/datetime/time-zone-overview.md + - name: Use time zones in date and time arithmetic + href: ../standard/datetime/use-time-zones-in-arithmetic.md + - name: Convert between DateTime and DateTimeOffset + href: ../standard/datetime/converting-between-datetime-and-offset.md + - name: Convert times between time zones + href: ../standard/datetime/converting-between-time-zones.md + - name: "How to: Resolve ambiguous times" + href: ../standard/datetime/resolve-ambiguous-times.md + - name: "How to: Let users resolve ambiguous times" + href: ../standard/datetime/let-users-resolve-ambiguous-times.md + - name: Instantiate a DateTimeOffset object + items: + - name: Overview + href: ../standard/datetime/instantiating-a-datetimeoffset-object.md + - name: Create time zones without adjustment rules + href: ../standard/datetime/create-time-zones-without-adjustment-rules.md + - name: Create time zones with adjustment rules + href: ../standard/datetime/create-time-zones-with-adjustment-rules.md + - name: Time zones defined by the OS + items: + - name: Overview + href: ../standard/datetime/finding-the-time-zones-on-local-system.md + - name: Enumerate time zones present on a computer + href: ../standard/datetime/enumerate-time-zones.md + - name: Access predefined UTC and local time zone objects + href: ../standard/datetime/access-utc-and-local.md + - name: Instantiate a TimeZoneInfo object + href: ../standard/datetime/instantiate-time-zone-info.md + - name: Save and restore time zones + items: + - name: Overview + href: ../standard/datetime/saving-and-restoring-time-zones.md + - name: Save time zones to an embedded resource + href: ../standard/datetime/save-time-zones-to-an-embedded-resource.md + - name: Restore time zones from an embedded resource + href: ../standard/datetime/restore-time-zones-from-an-embedded-resource.md + - name: Supplemental API remarks + items: + - name: DateTime struct + items: + - name: Type remarks + href: runtime-libraries/system-datetime.md + displayName: datetime + - name: ToBinary method + href: runtime-libraries/system-datetime-tobinary.md + - name: TryParse method + href: runtime-libraries/system-datetime-tryparse.md + - name: TimeSpan struct + items: + - name: Type remarks + href: runtime-libraries/system-timespan.md + displayName: timespan + - name: Parse method + href: runtime-libraries/system-timespan-parse.md + - name: TryParse method + href: runtime-libraries/system-timespan-tryparse.md + - name: Attributes + items: + - name: Overview + href: ../standard/attributes/index.md + displayName: attributes + - name: Apply attributes + href: ../standard/attributes/applying-attributes.md + - name: Write custom attributes + href: ../standard/attributes/writing-custom-attributes.md + - name: Retrieve information stored in attributes + href: ../standard/attributes/retrieving-information-stored-in-attributes.md + - name: Performance-related types + items: + - name: Memory and span-related types + items: + - name: Overview + href: ../standard/memory-and-spans/index.md + - name: Memory and Span usage guidelines + href: ../standard/memory-and-spans/memory-t-usage-guidelines.md + - name: Supplemental API remarks + items: + - name: Span struct + href: runtime-libraries/system-span{t}.md + - name: SIMD-enabled types + href: ../standard/simd.md + - name: Value tuples + href: ../standard/value-tuples.md + - name: Runtime libraries items: - - name: Overview - href: ../standard/serialization/index.md - - name: JSON serialization - items: - name: Overview - href: ../standard/serialization/system-text-json/overview.md - displayName: json serialization - - name: How to + href: ../standard/runtime-libraries-overview.md + - name: Format numbers, dates, other types items: - - name: Serialize - items: - - name: How to serialize - href: ../standard/serialization/system-text-json/how-to.md - - name: Customize property names and values - href: ../standard/serialization/system-text-json/customize-properties.md - - name: Ignore properties - href: ../standard/serialization/system-text-json/ignore-properties.md - - name: Include fields - href: ../standard/serialization/system-text-json/fields.md - - name: Deserialize - items: - - name: How to deserialize - href: ../standard/serialization/system-text-json/deserialization.md - - name: Require JSON properties - href: ../standard/serialization/system-text-json/required-properties.md - - name: Allow invalid JSON - href: ../standard/serialization/system-text-json/invalid-json.md - - name: Handle missing members - href: ../standard/serialization/system-text-json/missing-members.md - - name: Handle overflow JSON, use JsonElement or JsonNode - href: ../standard/serialization/system-text-json/handle-overflow.md - - name: Deserialize to immutable types - href: ../standard/serialization/system-text-json/immutability.md - - name: Populate initialized properties - href: ../standard/serialization/system-text-json/populate-properties.md - - name: Migrate from Newtonsoft.Json - href: ../standard/serialization/system-text-json/migrate-from-newtonsoft.md - - name: Instantiate JsonSerializerOptions - href: ../standard/serialization/system-text-json/configure-options.md - - name: Enable case-insensitive matching - href: ../standard/serialization/system-text-json/character-casing.md - - name: Handle references - href: ../standard/serialization/system-text-json/preserve-references.md - - name: Serialize polymorphic types - href: ../standard/serialization/system-text-json/polymorphism.md - - name: Read/write JSON without using JsonSerializer - items: - - name: Use DOM - href: ../standard/serialization/system-text-json/use-dom.md - - name: Use Utf8JsonWriter - href: ../standard/serialization/system-text-json/use-utf8jsonwriter.md - - name: Use Utf8JsonReader - href: ../standard/serialization/system-text-json/use-utf8jsonreader.md - - name: Visual Basic support - href: ../standard/serialization/system-text-json/visual-basic-support.md - - name: Supported collection types - href: ../standard/serialization/system-text-json/supported-collection-types.md - - name: Advanced + - name: Overview + href: ../standard/base-types/formatting-types.md + - name: Standard numeric format strings + href: ../standard/base-types/standard-numeric-format-strings.md + - name: Custom numeric format strings + href: ../standard/base-types/custom-numeric-format-strings.md + - name: Standard date and time format strings + href: ../standard/base-types/standard-date-and-time-format-strings.md + - name: Custom date and time format strings + href: ../standard/base-types/custom-date-and-time-format-strings.md + - name: Standard TimeSpan format strings + href: ../standard/base-types/standard-timespan-format-strings.md + - name: Custom TimeSpan format strings + href: ../standard/base-types/custom-timespan-format-strings.md + - name: Enumeration format strings + href: ../standard/base-types/enumeration-format-strings.md + - name: Composite formatting + href: ../standard/base-types/composite-formatting.md + - name: How-tos + items: + - name: Pad a number with leading zeros + href: ../standard/base-types/how-to-pad-a-number-with-leading-zeros.md + - name: Extract the day of the week from a date + href: ../standard/base-types/how-to-extract-the-day-of-the-week-from-a-specific-date.md + - name: Use custom numeric format providers + href: ../standard/base-types/how-to-define-and-use-custom-numeric-format-providers.md + - name: Round-trip date and time values + href: ../standard/base-types/how-to-round-trip-date-and-time-values.md + - name: Display milliseconds in date and time values + href: ../standard/base-types/how-to-display-milliseconds-in-date-and-time-values.md + - name: Display dates in non-Gregorian calendars + href: ../standard/base-types/how-to-display-dates-in-non-gregorian-calendars.md + - name: Work with strings items: - - name: Source generation - items: - - name: Reflection vs. source generation - href: ../standard/serialization/system-text-json/reflection-vs-source-generation.md - - name: Source-generation modes - href: ../standard/serialization/system-text-json/source-generation-modes.md - - name: Use source generation - href: ../standard/serialization/system-text-json/source-generation.md - - name: Customize character encoding - href: ../standard/serialization/system-text-json/character-encoding.md - - name: Write custom converters - href: ../standard/serialization/system-text-json/converters-how-to.md - - name: Customize contracts - href: ../standard/serialization/system-text-json/custom-contracts.md - - name: XML and SOAP serialization - items: - - name: Overview - href: ../standard/serialization/xml-and-soap-serialization.md - - name: XML serialization in depth - href: ../standard/serialization/introducing-xml-serialization.md - - name: Examples - href: ../standard/serialization/examples-of-xml-serialization.md - - name: The XML Schema Definition tool - href: ../standard/serialization/the-xml-schema-definition-tool-and-xml-serialization.md - - name: Control XML serialization using attributes - href: ../standard/serialization/controlling-xml-serialization-using-attributes.md - - name: Attributes that control XML serialization - href: ../standard/serialization/attributes-that-control-xml-serialization.md - - name: XML serialization with XML Web Services - href: ../standard/serialization/xml-serialization-with-xml-web-services.md - - name: Attributes that control encoded SOAP serialization - href: ../standard/serialization/attributes-that-control-encoded-soap-serialization.md - - name: How-tos + - name: Character encoding + href: ../standard/base-types/character-encoding-introduction.md + - name: How to use character encoding classes + href: ../standard/base-types/character-encoding.md + - name: Best practices + items: + - name: Comparing strings + href: ../standard/base-types/best-practices-strings.md + - name: Displaying and persisting formatted data + href: ../standard/base-types/best-practices-display-data.md + - name: Behavior changes in .NET 5+ (Windows) + href: ../standard/base-types/string-comparison-net-5-plus.md + - name: Basic string operations + items: + - name: Overview + href: ../standard/base-types/basic-string-operations.md + displayName: string operations + - name: Create new strings + href: ../standard/base-types/creating-new.md + - name: Trim and remove characters + href: ../standard/base-types/trimming.md + - name: Pad strings + href: ../standard/base-types/padding.md + - name: Comparison methods + href: ../standard/base-types/comparing.md + - name: Change case + href: ../standard/base-types/changing-case.md + - name: Separate parts of a string + href: ../standard/base-types/divide-up-strings.md + - name: Use the StringBuilder class + href: ../standard/base-types/stringbuilder.md + - name: "How to: Perform basic string manipulations" + href: ../standard/base-types/basic-manipulations.md + - name: Parse (convert) strings + items: + - name: Overview + href: ../standard/base-types/parsing-strings.md + - name: Parse numeric strings + href: ../standard/base-types/parsing-numeric.md + - name: Parse date and time strings + href: ../standard/base-types/parsing-datetime.md + - name: Parse other strings + href: ../standard/base-types/parsing-other.md + - name: Supplemental API remarks + items: + - name: String class + items: + - name: Type remarks + href: runtime-libraries/system-string.md + displayName: string + - name: Constructor + href: runtime-libraries/system-string-ctor.md + - name: Format method + href: runtime-libraries/system-string-format.md + - name: Intern method + href: runtime-libraries/system-string-intern.md + - name: IsNullOrEmpty method + href: runtime-libraries/system-string-isnullorempty.md + - name: Char struct + href: runtime-libraries/system-char.md + - name: StringComparer class + href: runtime-libraries/system-stringcomparer.md + - name: Encoding class + items: + - name: Type remarks + href: runtime-libraries/system-text-encoding.md + displayName: encoding + - name: Default property + href: runtime-libraries/system-text-encoding-default.md + - name: Regex class + items: + - name: Type remarks + href: runtime-libraries/system-text-regularexpressions-regex.md + displayName: regex + - name: Match method + href: runtime-libraries/system-text-regularexpressions-regex-match.md + - name: Rune struct + href: runtime-libraries/system-text-rune.md + - name: StringBuilder class + href: runtime-libraries/system-text-stringbuilder.md + - name: Regular expressions items: - - name: Serialize an object - href: ../standard/serialization/how-to-serialize-an-object.md - - name: Deserialize an object - href: ../standard/serialization/how-to-deserialize-an-object.md - - name: Use the XML Schema Definition tool to generate classes and XML schema documents - href: ../standard/serialization/xml-schema-def-tool-gen.md - - name: Control serialization of derived classes - href: ../standard/serialization/how-to-control-serialization-of-derived-classes.md - - name: Specify an alternate element name for an XML stream - href: ../standard/serialization/how-to-specify-an-alternate-element-name-for-an-xml-stream.md - - name: Qualify XML element and XML attribute names - href: ../standard/serialization/how-to-qualify-xml-element-and-xml-attribute-names.md - - name: Serialize an object as a SOAP-encoded XML stream - href: ../standard/serialization/how-to-serialize-an-object-as-a-soap-encoded-xml-stream.md - - name: Override encoded SOAP XML serialization - href: ../standard/serialization/how-to-override-encoded-soap-xml-serialization.md - - name: Chunk serialized data - href: ../standard/serialization/how-to-chunk-serialized-data.md - - name: XML serialization elements + - name: Overview + href: ../standard/base-types/regular-expressions.md + displayName: regular expressions + - name: Source generation + href: ../standard/base-types/regular-expression-source-generators.md + displayName: regular expressions,advanced,design concepts,source generators,algorithmic reduction,regex + - name: Language reference + items: + - name: Overview + href: ../standard/base-types/regular-expression-language-quick-reference.md + - name: Character escapes + href: ../standard/base-types/character-escapes-in-regular-expressions.md + - name: Character classes + href: ../standard/base-types/character-classes-in-regular-expressions.md + - name: Anchors + href: ../standard/base-types/anchors-in-regular-expressions.md + - name: Grouping constructs + href: ../standard/base-types/grouping-constructs-in-regular-expressions.md + - name: Quantifiers + href: ../standard/base-types/quantifiers-in-regular-expressions.md + - name: Backreference constructs + href: ../standard/base-types/backreference-constructs-in-regular-expressions.md + - name: Alternation constructs + href: ../standard/base-types/alternation-constructs-in-regular-expressions.md + - name: Substitutions + href: ../standard/base-types/substitutions-in-regular-expressions.md + - name: Regular expression options + href: ../standard/base-types/regular-expression-options.md + - name: Miscellaneous constructs + href: ../standard/base-types/miscellaneous-constructs-in-regular-expressions.md + - name: Best practices for regular expressions + href: ../standard/base-types/best-practices-regex.md + - name: Regular expression object model + href: ../standard/base-types/the-regular-expression-object-model.md + - name: Regular expression behavior + items: + - name: Overview + href: ../standard/base-types/details-of-regular-expression-behavior.md + - name: Backtracking + href: ../standard/base-types/backtracking-in-regular-expressions.md + - name: Compilation and reuse + href: ../standard/base-types/compilation-and-reuse-in-regular-expressions.md + - name: Thread safety + href: ../standard/base-types/thread-safety-in-regular-expressions.md + - name: Examples + items: + - name: Scan for HREFs + href: ../standard/base-types/regular-expression-example-scanning-for-hrefs.md + - name: Change date formats + href: ../standard/base-types/regular-expression-example-changing-date-formats.md + - name: Extract a protocol and port number from a URL + href: ../standard/base-types/how-to-extract-a-protocol-and-port-number-from-a-url.md + - name: Strip invalid characters from a string + href: ../standard/base-types/how-to-strip-invalid-characters-from-a-string.md + - name: Verify that strings are in valid email format + href: ../standard/base-types/how-to-verify-that-strings-are-in-valid-email-format.md + - name: Serialization items: - - name: system.xml.serialization - href: ../standard/serialization/system-xml-serialization-element.md - - name: dateTimeSerialization - href: ../standard/serialization/datetimeserialization-element.md - - name: schemaImporterExtensions - href: ../standard/serialization/schemaimporterextensions-element.md - - name: add element for schemaImporterExtensions - href: ../standard/serialization/add-element-for-schemaimporterextensions.md - - name: xmlSerializer - href: ../standard/serialization/xmlserializer-element.md - - name: Tools + - name: Overview + href: ../standard/serialization/index.md + - name: JSON serialization + items: + - name: Overview + href: ../standard/serialization/system-text-json/overview.md + displayName: json serialization + - name: How to + items: + - name: Serialize + items: + - name: How to serialize + href: ../standard/serialization/system-text-json/how-to.md + - name: Customize property names and values + href: ../standard/serialization/system-text-json/customize-properties.md + - name: Ignore properties + href: ../standard/serialization/system-text-json/ignore-properties.md + - name: Include fields + href: ../standard/serialization/system-text-json/fields.md + - name: Deserialize + items: + - name: How to deserialize + href: ../standard/serialization/system-text-json/deserialization.md + - name: Require JSON properties + href: ../standard/serialization/system-text-json/required-properties.md + - name: Allow invalid JSON + href: ../standard/serialization/system-text-json/invalid-json.md + - name: Handle missing members + href: ../standard/serialization/system-text-json/missing-members.md + - name: Handle overflow JSON, use JsonElement or JsonNode + href: ../standard/serialization/system-text-json/handle-overflow.md + - name: Deserialize to immutable types + href: ../standard/serialization/system-text-json/immutability.md + - name: Populate initialized properties + href: ../standard/serialization/system-text-json/populate-properties.md + - name: Migrate from Newtonsoft.Json + href: ../standard/serialization/system-text-json/migrate-from-newtonsoft.md + - name: Instantiate JsonSerializerOptions + href: ../standard/serialization/system-text-json/configure-options.md + - name: Enable case-insensitive matching + href: ../standard/serialization/system-text-json/character-casing.md + - name: Handle references + href: ../standard/serialization/system-text-json/preserve-references.md + - name: Serialize polymorphic types + href: ../standard/serialization/system-text-json/polymorphism.md + - name: Read/write JSON without using JsonSerializer + items: + - name: Use DOM + href: ../standard/serialization/system-text-json/use-dom.md + - name: Use Utf8JsonWriter + href: ../standard/serialization/system-text-json/use-utf8jsonwriter.md + - name: Use Utf8JsonReader + href: ../standard/serialization/system-text-json/use-utf8jsonreader.md + - name: Visual Basic support + href: ../standard/serialization/system-text-json/visual-basic-support.md + - name: Supported collection types + href: ../standard/serialization/system-text-json/supported-collection-types.md + - name: Advanced + items: + - name: Source generation + items: + - name: Reflection vs. source generation + href: ../standard/serialization/system-text-json/reflection-vs-source-generation.md + - name: Source-generation modes + href: ../standard/serialization/system-text-json/source-generation-modes.md + - name: Use source generation + href: ../standard/serialization/system-text-json/source-generation.md + - name: Customize character encoding + href: ../standard/serialization/system-text-json/character-encoding.md + - name: Write custom converters + href: ../standard/serialization/system-text-json/converters-how-to.md + - name: Customize contracts + href: ../standard/serialization/system-text-json/custom-contracts.md + - name: XML and SOAP serialization + items: + - name: Overview + href: ../standard/serialization/xml-and-soap-serialization.md + - name: XML serialization in depth + href: ../standard/serialization/introducing-xml-serialization.md + - name: Examples + href: ../standard/serialization/examples-of-xml-serialization.md + - name: The XML Schema Definition tool + href: ../standard/serialization/the-xml-schema-definition-tool-and-xml-serialization.md + - name: Control XML serialization using attributes + href: ../standard/serialization/controlling-xml-serialization-using-attributes.md + - name: Attributes that control XML serialization + href: ../standard/serialization/attributes-that-control-xml-serialization.md + - name: XML serialization with XML Web Services + href: ../standard/serialization/xml-serialization-with-xml-web-services.md + - name: Attributes that control encoded SOAP serialization + href: ../standard/serialization/attributes-that-control-encoded-soap-serialization.md + - name: How-tos + items: + - name: Serialize an object + href: ../standard/serialization/how-to-serialize-an-object.md + - name: Deserialize an object + href: ../standard/serialization/how-to-deserialize-an-object.md + - name: Use the XML Schema Definition tool to generate classes and XML schema documents + href: ../standard/serialization/xml-schema-def-tool-gen.md + - name: Control serialization of derived classes + href: ../standard/serialization/how-to-control-serialization-of-derived-classes.md + - name: Specify an alternate element name for an XML stream + href: ../standard/serialization/how-to-specify-an-alternate-element-name-for-an-xml-stream.md + - name: Qualify XML element and XML attribute names + href: ../standard/serialization/how-to-qualify-xml-element-and-xml-attribute-names.md + - name: Serialize an object as a SOAP-encoded XML stream + href: ../standard/serialization/how-to-serialize-an-object-as-a-soap-encoded-xml-stream.md + - name: Override encoded SOAP XML serialization + href: ../standard/serialization/how-to-override-encoded-soap-xml-serialization.md + - name: Chunk serialized data + href: ../standard/serialization/how-to-chunk-serialized-data.md + - name: XML serialization elements + items: + - name: system.xml.serialization + href: ../standard/serialization/system-xml-serialization-element.md + - name: dateTimeSerialization + href: ../standard/serialization/datetimeserialization-element.md + - name: schemaImporterExtensions + href: ../standard/serialization/schemaimporterextensions-element.md + - name: add element for schemaImporterExtensions + href: ../standard/serialization/add-element-for-schemaimporterextensions.md + - name: xmlSerializer + href: ../standard/serialization/xmlserializer-element.md + - name: Tools + items: + - name: XML Serializer Generator tool (Sgen.exe) + href: ../standard/serialization/xml-serializer-generator-tool-sgen-exe.md + - name: XML Schema Definition tool (Xsd.exe) + href: ../standard/serialization/xml-schema-definition-tool-xsd-exe.md + - name: Binary serialization + items: + - name: BinaryFormatter security guide + href: ../standard/serialization/binaryformatter-security-guide.md + - name: BinaryFormatter event source + href: ../standard/serialization/binaryformatter-event-source.md + - name: Supplemental API remarks + items: + - name: DataContractAttribute class + href: runtime-libraries/system-runtime-serialization-datacontractattribute.md + - name: DataContractSerializer class + href: runtime-libraries/system-runtime-serialization-datacontractserializer.md + - name: IExtensibleDataObject class + href: runtime-libraries/system-runtime-serialization-iextensibledataobject.md + - name: XsdDataContractExporter class + href: runtime-libraries/system-runtime-serialization-xsddatacontractexporter.md + - name: System.CommandLine items: - - name: XML Serializer Generator tool (Sgen.exe) - href: ../standard/serialization/xml-serializer-generator-tool-sgen-exe.md - - name: XML Schema Definition tool (Xsd.exe) - href: ../standard/serialization/xml-schema-definition-tool-xsd-exe.md - - name: Binary serialization - items: - - name: BinaryFormatter security guide - href: ../standard/serialization/binaryformatter-security-guide.md - - name: BinaryFormatter event source - href: ../standard/serialization/binaryformatter-event-source.md - - name: Supplemental API remarks - items: - - name: DataContractAttribute class - href: runtime-libraries/system-runtime-serialization-datacontractattribute.md - - name: DataContractSerializer class - href: runtime-libraries/system-runtime-serialization-datacontractserializer.md - - name: IExtensibleDataObject class - href: runtime-libraries/system-runtime-serialization-iextensibledataobject.md - - name: XsdDataContractExporter class - href: runtime-libraries/system-runtime-serialization-xsddatacontractexporter.md - - name: System.CommandLine - items: - - name: Overview - href: ../standard/commandline/index.md - - name: Get started tutorial - href: ../standard/commandline/get-started-tutorial.md - - name: Command-line syntax - href: ../standard/commandline/syntax.md - - name: Define commands - href: ../standard/commandline/define-commands.md - - name: Model binding - href: ../standard/commandline/model-binding.md - - name: Tab completion - href: ../standard/commandline/tab-completion.md - - name: Dependency injection - href: ../standard/commandline/dependency-injection.md - - name: Customize help - href: ../standard/commandline/customize-help.md - - name: Handle termination - href: ../standard/commandline/handle-termination.md - - name: Use middleware - href: ../standard/commandline/use-middleware.md - - name: File and stream I/O - items: - - name: Overview - href: ../standard/io/index.md - - name: File path formats on Windows systems - href: ../standard/io/file-path-formats.md - - name: Common I/O tasks - href: ../standard/io/common-i-o-tasks.md - items: - - name: "How to: Copy Directories" - href: ../standard/io/how-to-copy-directories.md - - name: "How to: Enumerate Directories and Files" - href: ../standard/io/how-to-enumerate-directories-and-files.md - - name: "How to: Read and Write to a Newly Created Data File" - href: ../standard/io/how-to-read-and-write-to-a-newly-created-data-file.md - - name: "How to: Open and Append to a Log File" - href: ../standard/io/how-to-open-and-append-to-a-log-file.md - - name: "How to: Write Text to a File" - href: ../standard/io/how-to-write-text-to-a-file.md - - name: "How to: Read Text from a File" - href: ../standard/io/how-to-read-text-from-a-file.md - - name: "How to: Read Characters from a String" - href: ../standard/io/how-to-read-characters-from-a-string.md - - name: "How to: Write Characters to a String" - href: ../standard/io/how-to-write-characters-to-a-string.md - - name: "How to: Add or Remove Access Control List Entries" - href: ../standard/io/how-to-add-or-remove-access-control-list-entries.md - - name: "How to: Compress and Extract Files" - href: ../standard/io/how-to-compress-and-extract-files.md - - name: Composing Streams - href: ../standard/io/composing-streams.md - - name: "How to: Convert Between .NET Framework Streams and Windows Runtime Streams" - href: ../standard/io/how-to-convert-between-dotnet-streams-and-winrt-streams.md - - name: Asynchronous file I/O - href: ../standard/io/asynchronous-file-i-o.md - - name: Handle I/O errors - href: ../standard/io/handling-io-errors.md - - name: Isolated storage - href: ../standard/io/isolated-storage.md - items: - - name: Types of Isolation - href: ../standard/io/types-of-isolation.md - - name: "How to: Obtain Stores for Isolated Storage" - href: ../standard/io/how-to-obtain-stores-for-isolated-storage.md - - name: "How to: Enumerate Stores for Isolated Storage" - href: ../standard/io/how-to-enumerate-stores-for-isolated-storage.md - - name: "How to: Delete Stores in Isolated Storage" - href: ../standard/io/how-to-delete-stores-in-isolated-storage.md - - name: "How to: Anticipate Out-of-Space Conditions with Isolated Storage" - href: ../standard/io/how-to-anticipate-out-of-space-conditions-with-isolated-storage.md - - name: "How to: Create Files and Directories in Isolated Storage" - href: ../standard/io/how-to-create-files-and-directories-in-isolated-storage.md - - name: "How to: Find Existing Files and Directories in Isolated Storage" - href: ../standard/io/how-to-find-existing-files-and-directories-in-isolated-storage.md - - name: "How to: Read and Write to Files in Isolated Storage" - href: ../standard/io/how-to-read-and-write-to-files-in-isolated-storage.md - - name: "How to: Delete Files and Directories in Isolated Storage" - href: ../standard/io/how-to-delete-files-and-directories-in-isolated-storage.md - - name: Pipes - href: ../standard/io/pipe-operations.md - items: - - name: "How to: Use Anonymous Pipes for Local Interprocess Communication" - href: ../standard/io/how-to-use-anonymous-pipes-for-local-interprocess-communication.md - - name: "How to: Use Named Pipes for Network Interprocess Communication" - href: ../standard/io/how-to-use-named-pipes-for-network-interprocess-communication.md - - name: Pipelines - href: ../standard/io/pipelines.md - - name: Work with buffers - href: ../standard/io/buffers.md - - name: Memory-mapped files - href: ../standard/io/memory-mapped-files.md - - name: Supplemental API remarks - items: - - name: FileStream class - href: runtime-libraries/system-io-filestream.md - - name: FileSystemWatcher class - href: runtime-libraries/system-io-filesystemwatcher.md - - name: The System.AppContext class - href: runtime-libraries/system-appcontext.md - - name: The System.Console class - items: - - name: Console apps - href: ../standard/building-console-apps.md - - name: Supplemental API remarks - href: runtime-libraries/system-console.md - - name: The System.Random class - href: runtime-libraries/system-random.md - - name: Dependency injection - items: - - name: Overview - href: ../core/extensions/dependency-injection.md - displayName: dependency injection,di,ioc,ioc container,dependency container,inversion of control - - name: Use dependency injection - href: ../core/extensions/dependency-injection-usage.md - displayName: use dependency injection,di,di examples,ioc,ioc container,dependency container,inversion of control - - name: Dependency injection guidelines - href: ../core/extensions/dependency-injection-guidelines.md - displayName: dependency injection best practices,guidelines,di,ioc,ioc container,dependency container,inversion of control - - name: Configuration - items: - - name: Overview - href: ../core/extensions/configuration.md - displayName: configuration,config,configuration sources,config sources - - name: Configuration providers - href: ../core/extensions/configuration-providers.md - displayName: configuration providers,config providers - - name: Implement a custom configuration provider - href: ../core/extensions/custom-configuration-provider.md - displayName: custom configuration,custom config,custom configuration provider,custom config provider - - name: Options pattern - href: ../core/extensions/options.md - displayName: options pattern,options,configuration options,config options - - name: Options validation source generation - href: ../core/extensions/options-validation-generator.md - displayName: options source generation, OptionsValidator, OptionsValidatorAttribute - - name: Options pattern guidance for library authors - href: ../core/extensions/options-library-authors.md - displayName: options pattern guidance,options guidance,configuration options guidance,config options guidance - - name: Logging - items: - - name: Overview - href: ../core/extensions/logging.md - displayName: logging,logger,log,loggers - - name: Logging providers - href: ../core/extensions/logging-providers.md - displayName: logging providers,log providers - - name: Compile-time logging source generation - href: ../core/extensions/logger-message-generator.md - displayName: LoggerMessage,LoggerMessageAttribute,source generator,compile-time generation - - name: Logging guidance for library authors - href: ../core/extensions/logging-library-authors.md - displayName: logging guidance,logger guidance,log guidance - - name: Implement a custom logging provider - href: ../core/extensions/custom-logging-provider.md - displayName: custom logging,custom log,custom logging provider,custom log provider - - name: High-performance logging - href: ../core/extensions/high-performance-logging.md - displayName: high-performance logging,high-performance log,high-performance logging provider,high-performance log provider - - name: Console log formatting - href: ../core/extensions/console-log-formatter.md - displayName: console log formatting,console log formatter,console log formatting provider,console log formatter provider - - name: HostBuilder (generic host) - href: ../core/extensions/generic-host.md - - name: Resilience - href: ../core/resilience/index.md - displayName: resilience,transient fault handling,recovery,polly - - name: Networking - items: - - name: Network programming - href: networking/overview.md - displayName: networking,sockets,socket,socket programming,socket client,socket server,socket client server,socket client-server,socket client-server,socket client/server,socket client/server,socket client-serve - - name: Network availability - href: networking/network-info.md - displayName: network availability,network info,network information,network availability info,network availability information,network info availability,network information availability,network availability info - - name: IPv6 overview - href: networking/ipv6-overview.md - displayName: ipv6,ipv - - name: Service discovery in .NET - href: ../core/extensions/service-discovery.md - - name: HTTP - items: - - name: HTTP support - href: networking/http/http-overview.md - displayName: networking,http,web services,httpclient - - name: HTTP client guidelines - href: networking/http/httpclient-guidelines.md - displayName: networking, httpclient - - name: Make HTTP requests - href: networking/http/httpclient.md - displayName: networking,http,web services,client - - name: HTTP client factory - href: ../core/extensions/httpclient-factory.md - displayName: networking,httpclient,http,dependency injection,client,factory,named client,named httpclient,typed client,typed httpclient - - name: Build resilient HTTP apps - href: ../core/resilience/http-resilience.md - displayName: resilience,transient fault handling,http,httpclient,recovery,polly - - name: HTTP/3 with .NET - href: ../core/extensions/httpclient-http3.md - displayName: networking,http,http3,http/3,http3 with .net,http/3 with .net - - name: Rate limit an HTTP handler - href: ../core/extensions/http-ratelimiter.md - displayName: networking,http,rate limit,rate limiting,rate limit http,rate limiting http,rate limit http handler,rate limiting http handler - - name: Customize SNI in HTTP requests - href: ../core/extensions/httpclient-sni.md - displayName: networking,http,httpclient,sni,server name indication,server name indication http,server name indication httpclient,server name indication http client - - name: Supplemental API remarks + - name: Overview + href: ../standard/commandline/index.md + - name: Get started tutorial + href: ../standard/commandline/get-started-tutorial.md + - name: Command-line syntax + href: ../standard/commandline/syntax.md + - name: Define commands + href: ../standard/commandline/define-commands.md + - name: Model binding + href: ../standard/commandline/model-binding.md + - name: Tab completion + href: ../standard/commandline/tab-completion.md + - name: Dependency injection + href: ../standard/commandline/dependency-injection.md + - name: Customize help + href: ../standard/commandline/customize-help.md + - name: Handle termination + href: ../standard/commandline/handle-termination.md + - name: Use middleware + href: ../standard/commandline/use-middleware.md + - name: File and stream I/O items: - - name: HttpClient class - href: runtime-libraries/system-net-http-httpclient.md - - name: HttpClientHandler class - href: runtime-libraries/system-net-http-httpclienthandler.md - - name: HttpListener class - href: runtime-libraries/system-net-httplistener.md - - name: Sockets - items: - - name: Sockets support - href: networking/sockets/sockets-overview.md - displayName: networking,sockets,socket,socket programming,socket client,socket server - - name: Use Sockets to send and receive data over TCP - href: networking/sockets/socket-services.md - displayName: networking,sockets,socket,socket programming,socket client,socket server - - name: Use TcpClient and TcpListener - href: networking/sockets/tcp-classes.md - displayName: networking,tcp,tcp listener,tcp client - - name: Supplemental API remarks + - name: Overview + href: ../standard/io/index.md + - name: File path formats on Windows systems + href: ../standard/io/file-path-formats.md + - name: Common I/O tasks + href: ../standard/io/common-i-o-tasks.md + items: + - name: "How to: Copy Directories" + href: ../standard/io/how-to-copy-directories.md + - name: "How to: Enumerate Directories and Files" + href: ../standard/io/how-to-enumerate-directories-and-files.md + - name: "How to: Read and Write to a Newly Created Data File" + href: ../standard/io/how-to-read-and-write-to-a-newly-created-data-file.md + - name: "How to: Open and Append to a Log File" + href: ../standard/io/how-to-open-and-append-to-a-log-file.md + - name: "How to: Write Text to a File" + href: ../standard/io/how-to-write-text-to-a-file.md + - name: "How to: Read Text from a File" + href: ../standard/io/how-to-read-text-from-a-file.md + - name: "How to: Read Characters from a String" + href: ../standard/io/how-to-read-characters-from-a-string.md + - name: "How to: Write Characters to a String" + href: ../standard/io/how-to-write-characters-to-a-string.md + - name: "How to: Add or Remove Access Control List Entries" + href: ../standard/io/how-to-add-or-remove-access-control-list-entries.md + - name: "How to: Compress and Extract Files" + href: ../standard/io/how-to-compress-and-extract-files.md + - name: Composing Streams + href: ../standard/io/composing-streams.md + - name: "How to: Convert Between .NET Framework Streams and Windows Runtime Streams" + href: ../standard/io/how-to-convert-between-dotnet-streams-and-winrt-streams.md + - name: Asynchronous file I/O + href: ../standard/io/asynchronous-file-i-o.md + - name: Handle I/O errors + href: ../standard/io/handling-io-errors.md + - name: Isolated storage + href: ../standard/io/isolated-storage.md + items: + - name: Types of Isolation + href: ../standard/io/types-of-isolation.md + - name: "How to: Obtain Stores for Isolated Storage" + href: ../standard/io/how-to-obtain-stores-for-isolated-storage.md + - name: "How to: Enumerate Stores for Isolated Storage" + href: ../standard/io/how-to-enumerate-stores-for-isolated-storage.md + - name: "How to: Delete Stores in Isolated Storage" + href: ../standard/io/how-to-delete-stores-in-isolated-storage.md + - name: "How to: Anticipate Out-of-Space Conditions with Isolated Storage" + href: ../standard/io/how-to-anticipate-out-of-space-conditions-with-isolated-storage.md + - name: "How to: Create Files and Directories in Isolated Storage" + href: ../standard/io/how-to-create-files-and-directories-in-isolated-storage.md + - name: "How to: Find Existing Files and Directories in Isolated Storage" + href: ../standard/io/how-to-find-existing-files-and-directories-in-isolated-storage.md + - name: "How to: Read and Write to Files in Isolated Storage" + href: ../standard/io/how-to-read-and-write-to-files-in-isolated-storage.md + - name: "How to: Delete Files and Directories in Isolated Storage" + href: ../standard/io/how-to-delete-files-and-directories-in-isolated-storage.md + - name: Pipes + href: ../standard/io/pipe-operations.md + items: + - name: "How to: Use Anonymous Pipes for Local Interprocess Communication" + href: ../standard/io/how-to-use-anonymous-pipes-for-local-interprocess-communication.md + - name: "How to: Use Named Pipes for Network Interprocess Communication" + href: ../standard/io/how-to-use-named-pipes-for-network-interprocess-communication.md + - name: Pipelines + href: ../standard/io/pipelines.md + - name: Work with buffers + href: ../standard/io/buffers.md + - name: Memory-mapped files + href: ../standard/io/memory-mapped-files.md + - name: Supplemental API remarks + items: + - name: FileStream class + href: runtime-libraries/system-io-filestream.md + - name: FileSystemWatcher class + href: runtime-libraries/system-io-filesystemwatcher.md + - name: The System.AppContext class + href: runtime-libraries/system-appcontext.md + - name: The System.Console class items: - - name: Socket class - href: runtime-libraries/system-net-sockets-socket.md - - name: WebSockets - items: - - name: WebSockets support - href: networking/websockets.md - displayName: websockets,websocket,websocket programming,websocket client,websocket server - - name: Security - items: - - name: TLS/SSL best practices - href: ../core/extensions/sslstream-best-practices.md - displayName: tls,ssl,sslstream,sslstream best practices,tls best practices,ssl best practices - - name: Troubleshoot SslStream authentication issues - href: ../core/extensions/sslstream-troubleshooting.md - displayName: tls,ssl,sslstream,sslstream troubleshooting,tls troubleshooting,ssl troubleshooting - - name: Migrate from .NET Framework to .NET - href: ../core/extensions/sslstream-migration-from-framework.md - - name: QUIC - items: - - name: QUIC support - href: networking/quic/quic-overview.md - - name: QUIC troubleshooting - href: networking/quic/quic-troubleshooting.md - - name: Telemetry - items: - - name: Networking telemetry - href: networking/telemetry/overview.md - displayName: networking telemetry - - name: Metrics - href: networking/telemetry/metrics.md - displayName: networking metrics - - name: Events - href: networking/telemetry/events.md - displayName: networking events - - name: Event counters - href: networking/telemetry/event-counters.md - displayName: networking event counters - - name: File globbing - href: ../core/extensions/file-globbing.md - displayName: file globbing,globbing,globbing patterns,globbing pattern,globbing - - name: Primitives library - href: ../core/extensions/primitives.md - displayName: primitives,primitive types,ichangetoken,change notifications,string tokenizers,StringSegment,StringTokenizer,StringValues - - name: Globalization and localization - items: - - name: Overview - href: ../core/extensions/globalization-and-localization.md - displayName: globalization,localization,culture,localization and globalization - - name: Globalization - href: ../core/extensions/globalization.md - displayName: globalization,culture - - name: Globalization and ICU - href: ../core/extensions/globalization-icu.md - displayName: globalization,icu,culture - - name: Culture-insensitive string operations - items: - - name: Overview - href: ../core/extensions/performing-culture-insensitive-string-operations.md - - name: String comparisons - href: ../core/extensions/performing-culture-insensitive-string-comparisons.md - - name: Case changes - href: ../core/extensions/performing-culture-insensitive-case-changes.md - - name: String operations in collections - href: ../core/extensions/performing-culture-insensitive-string-operations-in-collections.md - - name: String operations in arrays - href: ../core/extensions/performing-culture-insensitive-string-operations-in-arrays.md - - name: Best practices for developing world-ready apps - href: ../core/extensions/best-practices-for-developing-world-ready-apps.md - - name: Localizability review - href: ../core/extensions/localizability-review.md - displayName: localizability,localization,localization review,localizability review - - name: Localization - href: ../core/extensions/localization.md - displayName: localization,localization review,localizability review - - name: Supplemental API remarks - items: - - name: CompareInfo - href: runtime-libraries/system-globalization-compareinfo.md - - name: CompareOptions - href: runtime-libraries/system-globalization-compareoptions.md - - name: CultureAndRegionInfoBuilder + - name: Console apps + href: ../standard/building-console-apps.md + - name: Supplemental API remarks + href: runtime-libraries/system-console.md + - name: The System.Random class + href: runtime-libraries/system-random.md + - name: Dependency injection items: - - name: Type remarks - href: runtime-libraries/system-globalization-cultureandregioninfobuilder.md - displayName: cultureandregioninfobuilder - - name: Constructor - href: runtime-libraries/system-globalization-cultureandregioninfobuilder-ctor.md - - name: CultureInfo + - name: Overview + href: ../core/extensions/dependency-injection.md + displayName: dependency injection,di,ioc,ioc container,dependency container,inversion of control + - name: Use dependency injection + href: ../core/extensions/dependency-injection-usage.md + displayName: use dependency injection,di,di examples,ioc,ioc container,dependency container,inversion of control + - name: Dependency injection guidelines + href: ../core/extensions/dependency-injection-guidelines.md + displayName: dependency injection best practices,guidelines,di,ioc,ioc container,dependency container,inversion of control + - name: Configuration items: - - name: Type remarks - href: runtime-libraries/system-globalization-cultureinfo.md - displayName: cultureinfo - - name: CurrentCulture property - href: runtime-libraries/system-globalization-cultureinfo-currentculture.md - - name: CurrentUICulture property - href: runtime-libraries/system-globalization-cultureinfo-currentuiculture.md - - name: InvariantCulture property - href: runtime-libraries/system-globalization-cultureinfo-invariantculture.md - - name: DateTimeFormatInfo - href: runtime-libraries/system-globalization-datetimeformatinfo.md - - name: NumberFormatInfo - href: runtime-libraries/system-globalization-numberformatinfo.md - - name: PersianCalendar - href: runtime-libraries/system-globalization-persiancalendar.md - - name: RegionInfo - href: runtime-libraries/system-globalization-regioninfo.md - - name: SortKey - href: runtime-libraries/system-globalization-sortkey.md - - name: SortVersion - href: runtime-libraries/system-globalization-sortversion.md - - name: Resources in .NET apps - items: - - name: Overview - href: ../core/extensions/resources.md - - name: Create resource files - items: - - name: Overview - href: ../core/extensions/create-resource-files.md - - name: Work with .resx files programmatically - href: ../core/extensions/work-with-resx-files-programmatically.md - - name: Create satellite assemblies - href: ../core/extensions/create-satellite-assemblies.md - - name: Package and deploy resources - href: ../core/extensions/package-and-deploy-resources.md - - name: Retrieve resources - href: ../core/extensions/retrieve-resources.md - - name: Supplemental API remarks - items: - - name: MissingManifestResourceException class - href: runtime-libraries/system-resources-missingmanifestresourceexception.md - - name: NeutralResourcesLanguageAttribute class - href: runtime-libraries/system-resources-neutralresourceslanguageattribute.md - - name: ResourceManager class + - name: Overview + href: ../core/extensions/configuration.md + displayName: configuration,config,configuration sources,config sources + - name: Configuration providers + href: ../core/extensions/configuration-providers.md + displayName: configuration providers,config providers + - name: Implement a custom configuration provider + href: ../core/extensions/custom-configuration-provider.md + displayName: custom configuration,custom config,custom configuration provider,custom config provider + - name: Options pattern + href: ../core/extensions/options.md + displayName: options pattern,options,configuration options,config options + - name: Options validation source generation + href: ../core/extensions/options-validation-generator.md + displayName: options source generation, OptionsValidator, OptionsValidatorAttribute + - name: Options pattern guidance for library authors + href: ../core/extensions/options-library-authors.md + displayName: options pattern guidance,options guidance,configuration options guidance,config options guidance + - name: Logging items: - - name: Type remarks - href: runtime-libraries/system-resources-resourcemanager.md - displayName: resourcemanager - - name: Constructor - href: runtime-libraries/system-resources-resourcemanager-ctor.md - - name: GetObject method - href: runtime-libraries/system-resources-resourcemanager-getobject.md - - name: GetString method - href: runtime-libraries/system-resources-resourcemanager-getstring.md - - name: ResourceReader class - href: runtime-libraries/system-resources-resourcereader.md - - name: SatelliteContractVersionAttribute class - href: runtime-libraries/system-resources-satellitecontractversionattribute.md - - name: Worker Services - items: - - name: Overview - displayName: workers,worker service,BackgroundService,IHostedService,queue service,timer service - href: ../core/extensions/workers.md - - name: Create a Queue Service - href: ../core/extensions/queue-service.md - - name: Use scoped services with a BackgroundService - href: ../core/extensions/scoped-service.md - - name: Create a Windows Service using BackgroundService - href: ../core/extensions/windows-service.md - - name: Create a Windows Service installer - href: ../core/extensions/windows-service-with-installer.md - displayName: msi,windows service installer,setup.exe - - name: Implement the IHostedService interface - href: ../core/extensions/timer-service.md - - name: Deploy a Worker Service to Azure - href: ../core/extensions/cloud-service.md - - name: Caching - href: ../core/extensions/caching.md - - name: Channels - href: ../core/extensions/channels.md - - name: Math operations - items: - - name: Supplemental API remarks - items: - - name: MidpointRounding enum - href: runtime-libraries/system-midpointrounding.md - - name: The Win32.Registry class - href: runtime-libraries/microsoft-win32-registry.md - - name: The Uri class - href: runtime-libraries/system-uri.md - - name: Reflection - items: - - name: Supplemental API remarks - items: - - name: Type class + - name: Overview + href: ../core/extensions/logging.md + displayName: logging,logger,log,loggers + - name: Logging providers + href: ../core/extensions/logging-providers.md + displayName: logging providers,log providers + - name: Compile-time logging source generation + href: ../core/extensions/logger-message-generator.md + displayName: LoggerMessage,LoggerMessageAttribute,source generator,compile-time generation + - name: Logging guidance for library authors + href: ../core/extensions/logging-library-authors.md + displayName: logging guidance,logger guidance,log guidance + - name: Implement a custom logging provider + href: ../core/extensions/custom-logging-provider.md + displayName: custom logging,custom log,custom logging provider,custom log provider + - name: High-performance logging + href: ../core/extensions/high-performance-logging.md + displayName: high-performance logging,high-performance log,high-performance logging provider,high-performance log provider + - name: Console log formatting + href: ../core/extensions/console-log-formatter.md + displayName: console log formatting,console log formatter,console log formatting provider,console log formatter provider + - name: HostBuilder (generic host) + href: ../core/extensions/generic-host.md + - name: Resilience + href: ../core/resilience/index.md + displayName: resilience,transient fault handling,recovery,polly + - name: Networking items: - - name: Type remarks - href: runtime-libraries/system-type.md - displayName: type - - name: GetProperty method - href: runtime-libraries/system-type-getproperty.md - - name: GetType method - href: runtime-libraries/system-type-gettype.md - - name: MakeGenericType method - href: runtime-libraries/system-type-makegenerictype.md - - name: Graphics - items: - - name: Supplemental API remarks - items: - - name: Matrix class - href: runtime-libraries/system-drawing-drawing2d-matrix.md - - name: The InternalsVisibleToAttribute class - href: runtime-libraries/system-runtime-compilerservices-internalsvisibletoattribute.md - - name: The RuntimeHelpers class - items: - - name: GetHashCode method - href: runtime-libraries/system-runtime-compilerservices-runtimehelpers-gethashcode.md - displayName: runtimehelpers - - name: The ComponentGuaranteesAttribute class - href: runtime-libraries/system-runtime-versioning-componentguaranteesattribute.md - - name: The AssemblyLoadContext class - href: runtime-libraries/system-runtime-loader-assemblyloadcontext.md - - name: The ProcessStartInfo class - items: - - name: UseShellExecute method - href: runtime-libraries/system-diagnostics-processstartinfo-useshellexecute.md - - name: The Environment class - items: - - name: GetEnvironmentVariable method - href: runtime-libraries/system-environment-getenvironmentvariable.md -- name: Execution model - items: - - name: Common Language Runtime (CLR) - href: ../standard/clr.md - - name: Managed execution process - href: ../standard/managed-execution-process.md - - name: Assemblies - items: - - name: Overview - displayName: assembly,assemblies - href: ../standard/assembly/index.md - - name: Assembly contents - href: ../standard/assembly/contents.md - - name: Manifest - href: ../standard/assembly/manifest.md - - name: Security considerations - href: ../standard/assembly/security-considerations.md - - name: Versioning + - name: Network programming + href: networking/overview.md + displayName: networking,sockets,socket,socket programming,socket client,socket server,socket client server,socket client-server,socket client-server,socket client/server,socket client/server,socket client-serve + - name: Network availability + href: networking/network-info.md + displayName: network availability,network info,network information,network availability info,network availability information,network info availability,network information availability,network availability info + - name: IPv6 overview + href: networking/ipv6-overview.md + displayName: ipv6,ipv + - name: Service discovery in .NET + href: ../core/extensions/service-discovery.md + - name: HTTP + items: + - name: HTTP support + href: networking/http/http-overview.md + displayName: networking,http,web services,httpclient + - name: HTTP client guidelines + href: networking/http/httpclient-guidelines.md + displayName: networking, httpclient + - name: Make HTTP requests + href: networking/http/httpclient.md + displayName: networking,http,web services,client + - name: HTTP client factory + href: ../core/extensions/httpclient-factory.md + displayName: networking,httpclient,http,dependency injection,client,factory,named client,named httpclient,typed client,typed httpclient + - name: Build resilient HTTP apps + href: ../core/resilience/http-resilience.md + displayName: resilience,transient fault handling,http,httpclient,recovery,polly + - name: HTTP/3 with .NET + href: ../core/extensions/httpclient-http3.md + displayName: networking,http,http3,http/3,http3 with .net,http/3 with .net + - name: Rate limit an HTTP handler + href: ../core/extensions/http-ratelimiter.md + displayName: networking,http,rate limit,rate limiting,rate limit http,rate limiting http,rate limit http handler,rate limiting http handler + - name: Customize SNI in HTTP requests + href: ../core/extensions/httpclient-sni.md + displayName: networking,http,httpclient,sni,server name indication,server name indication http,server name indication httpclient,server name indication http client + - name: Supplemental API remarks + items: + - name: HttpClient class + href: runtime-libraries/system-net-http-httpclient.md + - name: HttpClientHandler class + href: runtime-libraries/system-net-http-httpclienthandler.md + - name: HttpListener class + href: runtime-libraries/system-net-httplistener.md + - name: Sockets + items: + - name: Sockets support + href: networking/sockets/sockets-overview.md + displayName: networking,sockets,socket,socket programming,socket client,socket server + - name: Use Sockets to send and receive data over TCP + href: networking/sockets/socket-services.md + displayName: networking,sockets,socket,socket programming,socket client,socket server + - name: Use TcpClient and TcpListener + href: networking/sockets/tcp-classes.md + displayName: networking,tcp,tcp listener,tcp client + - name: Supplemental API remarks + items: + - name: Socket class + href: runtime-libraries/system-net-sockets-socket.md + - name: WebSockets + items: + - name: WebSockets support + href: networking/websockets.md + displayName: websockets,websocket,websocket programming,websocket client,websocket server + - name: Security + items: + - name: TLS/SSL best practices + href: ../core/extensions/sslstream-best-practices.md + displayName: tls,ssl,sslstream,sslstream best practices,tls best practices,ssl best practices + - name: Troubleshoot SslStream authentication issues + href: ../core/extensions/sslstream-troubleshooting.md + displayName: tls,ssl,sslstream,sslstream troubleshooting,tls troubleshooting,ssl troubleshooting + - name: Migrate from .NET Framework to .NET + href: ../core/extensions/sslstream-migration-from-framework.md + - name: QUIC + items: + - name: QUIC support + href: networking/quic/quic-overview.md + - name: QUIC troubleshooting + href: networking/quic/quic-troubleshooting.md + - name: Telemetry + items: + - name: Networking telemetry + href: networking/telemetry/overview.md + displayName: networking telemetry + - name: Metrics + href: networking/telemetry/metrics.md + displayName: networking metrics + - name: Events + href: networking/telemetry/events.md + displayName: networking events + - name: Event counters + href: networking/telemetry/event-counters.md + displayName: networking event counters + - name: File globbing + href: ../core/extensions/file-globbing.md + displayName: file globbing,globbing,globbing patterns,globbing pattern,globbing + - name: Primitives library + href: ../core/extensions/primitives.md + displayName: primitives,primitive types,ichangetoken,change notifications,string tokenizers,StringSegment,StringTokenizer,StringValues + - name: Globalization and localization items: - - name: Overview - displayName: versioning - href: ../standard/assembly/versioning.md - - name: The System.Version class - href: runtime-libraries/system-version.md - - name: Side-by-side execution - href: ../standard/assembly/side-by-side-execution.md - - name: Assembly file format - href: ../standard/assembly/file-format.md - - name: Unloadability in .NET Core - href: ../standard/assembly/unloadability.md - - name: Learn about reference assemblies - href: ../standard/assembly/reference-assemblies.md - - name: Resolve assembly loads - href: ../standard/assembly/resolve-loads.md - - name: Create assemblies - href: ../standard/assembly/create.md - - name: Assembly names - href: ../standard/assembly/names.md - - name: Find an assembly's fully qualified name - href: ../standard/assembly/find-fully-qualified-name.md - - name: Assembly location - href: ../standard/assembly/location.md - - name: Set assembly attributes + - name: Overview + href: ../core/extensions/globalization-and-localization.md + displayName: globalization,localization,culture,localization and globalization + - name: Globalization + href: ../core/extensions/globalization.md + displayName: globalization,culture + - name: Globalization and ICU + href: ../core/extensions/globalization-icu.md + displayName: globalization,icu,culture + - name: Culture-insensitive string operations + items: + - name: Overview + href: ../core/extensions/performing-culture-insensitive-string-operations.md + - name: String comparisons + href: ../core/extensions/performing-culture-insensitive-string-comparisons.md + - name: Case changes + href: ../core/extensions/performing-culture-insensitive-case-changes.md + - name: String operations in collections + href: ../core/extensions/performing-culture-insensitive-string-operations-in-collections.md + - name: String operations in arrays + href: ../core/extensions/performing-culture-insensitive-string-operations-in-arrays.md + - name: Best practices for developing world-ready apps + href: ../core/extensions/best-practices-for-developing-world-ready-apps.md + - name: Localizability review + href: ../core/extensions/localizability-review.md + displayName: localizability,localization,localization review,localizability review + - name: Localization + href: ../core/extensions/localization.md + displayName: localization,localization review,localizability review + - name: Supplemental API remarks + items: + - name: CompareInfo + href: runtime-libraries/system-globalization-compareinfo.md + - name: CompareOptions + href: runtime-libraries/system-globalization-compareoptions.md + - name: CultureAndRegionInfoBuilder + items: + - name: Type remarks + href: runtime-libraries/system-globalization-cultureandregioninfobuilder.md + displayName: cultureandregioninfobuilder + - name: Constructor + href: runtime-libraries/system-globalization-cultureandregioninfobuilder-ctor.md + - name: CultureInfo + items: + - name: Type remarks + href: runtime-libraries/system-globalization-cultureinfo.md + displayName: cultureinfo + - name: CurrentCulture property + href: runtime-libraries/system-globalization-cultureinfo-currentculture.md + - name: CurrentUICulture property + href: runtime-libraries/system-globalization-cultureinfo-currentuiculture.md + - name: InvariantCulture property + href: runtime-libraries/system-globalization-cultureinfo-invariantculture.md + - name: DateTimeFormatInfo + href: runtime-libraries/system-globalization-datetimeformatinfo.md + - name: NumberFormatInfo + href: runtime-libraries/system-globalization-numberformatinfo.md + - name: PersianCalendar + href: runtime-libraries/system-globalization-persiancalendar.md + - name: RegionInfo + href: runtime-libraries/system-globalization-regioninfo.md + - name: SortKey + href: runtime-libraries/system-globalization-sortkey.md + - name: SortVersion + href: runtime-libraries/system-globalization-sortversion.md + - name: Resources in .NET apps items: - - name: In code - href: ../standard/assembly/set-attributes.md - - name: In a project file - href: ../standard/assembly/set-attributes-project-file.md - - name: Strong-named assemblies + - name: Overview + href: ../core/extensions/resources.md + - name: Create resource files + items: + - name: Overview + href: ../core/extensions/create-resource-files.md + - name: Work with .resx files programmatically + href: ../core/extensions/work-with-resx-files-programmatically.md + - name: Create satellite assemblies + href: ../core/extensions/create-satellite-assemblies.md + - name: Package and deploy resources + href: ../core/extensions/package-and-deploy-resources.md + - name: Retrieve resources + href: ../core/extensions/retrieve-resources.md + - name: Supplemental API remarks + items: + - name: MissingManifestResourceException class + href: runtime-libraries/system-resources-missingmanifestresourceexception.md + - name: NeutralResourcesLanguageAttribute class + href: runtime-libraries/system-resources-neutralresourceslanguageattribute.md + - name: ResourceManager class + items: + - name: Type remarks + href: runtime-libraries/system-resources-resourcemanager.md + displayName: resourcemanager + - name: Constructor + href: runtime-libraries/system-resources-resourcemanager-ctor.md + - name: GetObject method + href: runtime-libraries/system-resources-resourcemanager-getobject.md + - name: GetString method + href: runtime-libraries/system-resources-resourcemanager-getstring.md + - name: ResourceReader class + href: runtime-libraries/system-resources-resourcereader.md + - name: SatelliteContractVersionAttribute class + href: runtime-libraries/system-resources-satellitecontractversionattribute.md + - name: Worker Services items: - - name: Overview - href: ../standard/assembly/strong-named.md - - name: Create and use strong-named assemblies - href: ../standard/assembly/create-use-strong-named.md - - name: Create a public-private key pair - href: ../standard/assembly/create-public-private-key-pair.md - - name: Sign an assembly with a strong name - href: ../standard/assembly/sign-strong-name.md - - name: Enhanced strong naming - href: ../standard/assembly/enhanced-strong-naming.md - - name: Reference a strong-named assembly - href: ../standard/assembly/reference-strong-named.md - - name: Disable strong-name bypass - href: ../standard/assembly/disable-strong-name-bypass-feature.md - - name: Delay-sign an assembly - href: ../standard/assembly/delay-sign.md - - name: View assembly contents - href: ../standard/assembly/view-contents.md - - name: Type forwarding in the CLR - href: ../standard/assembly/type-forwarding.md - - name: Friend assemblies + - name: Overview + displayName: workers,worker service,BackgroundService,IHostedService,queue service,timer service + href: ../core/extensions/workers.md + - name: Create a Queue Service + href: ../core/extensions/queue-service.md + - name: Use scoped services with a BackgroundService + href: ../core/extensions/scoped-service.md + - name: Create a Windows Service using BackgroundService + href: ../core/extensions/windows-service.md + - name: Create a Windows Service installer + href: ../core/extensions/windows-service-with-installer.md + displayName: msi,windows service installer,setup.exe + - name: Implement the IHostedService interface + href: ../core/extensions/timer-service.md + - name: Deploy a Worker Service to Azure + href: ../core/extensions/cloud-service.md + - name: Caching + href: ../core/extensions/caching.md + - name: Channels + href: ../core/extensions/channels.md + - name: Math operations items: - - name: Overview - displayName: friend assembly,friend assemblies - href: ../standard/assembly/friend.md - - name: Create unsigned friend assemblies - href: ../standard/assembly/create-unsigned-friend.md - - name: Create signed friend assemblies - href: ../standard/assembly/create-signed-friend.md - - name: Determine if a file is an assembly - href: ../standard/assembly/identify.md - - name: Load and unload assemblies - href: ../standard/assembly/load-unload.md - - name: Embed types from managed assemblies in Visual Studio - href: ../standard/assembly/embed-types-visual-studio.md - - name: Inspect assembly contents using MetadataLoadContext - href: ../standard/assembly/inspect-contents-using-metadataloadcontext.md - - name: Metadata and self-describing components - items: - - name: Overview - href: ../standard/metadata-and-self-describing-components.md - - name: Supplemental API remarks - items: - - name: The AssemblyBuilder class - href: runtime-libraries/system-reflection-emit-assemblybuilder.md - - name: The MethodBuilder class - href: runtime-libraries/system-reflection-emit-methodbuilder.md - - name: The TypeBuilder class - href: runtime-libraries/system-reflection-emit-typebuilder.md - - name: The DynamicMethod class - href: runtime-libraries/system-reflection-emit-dynamicmethod.md - - name: The DebugDirectoryEntryType enum - href: runtime-libraries/system-reflection-portableexecutable-debugdirectoryentrytype.md - - name: Dependency loading - items: - - name: Overview - displayName: dependency loading - href: ../core/dependency-loading/overview.md - - name: Understand AssemblyLoadContext - href: ../core/dependency-loading/understanding-assemblyloadcontext.md - - name: Dependency loading details - items: - - name: Default dependency probing - href: ../core/dependency-loading/default-probing.md - - name: Load managed assemblies - href: ../core/dependency-loading/loading-managed.md - - name: Load satellite assemblies - href: ../core/dependency-loading/loading-resources.md - - name: Load unmanaged libraries - href: ../core/dependency-loading/loading-unmanaged.md - - name: Collect detailed assembly loading information - href: ../core/dependency-loading/collect-details.md - - name: Tutorials - items: - - name: Create a .NET application with plugins - href: ../core/tutorials/creating-app-with-plugin-support.md - - name: How to use and debug assembly unloadability - href: ../standard/assembly/unloadability.md - - name: Versioning - items: - - name: Overview - href: ../core/versions/index.md - - name: .NET version selection - href: ../core/versions/selection.md - - name: Configure .NET Runtime + - name: Supplemental API remarks + items: + - name: MidpointRounding enum + href: runtime-libraries/system-midpointrounding.md + - name: The Win32.Registry class + href: runtime-libraries/microsoft-win32-registry.md + - name: The Uri class + href: runtime-libraries/system-uri.md + - name: Reflection + items: + - name: Supplemental API remarks + items: + - name: Type class + items: + - name: Type remarks + href: runtime-libraries/system-type.md + displayName: type + - name: GetProperty method + href: runtime-libraries/system-type-getproperty.md + - name: GetType method + href: runtime-libraries/system-type-gettype.md + - name: MakeGenericType method + href: runtime-libraries/system-type-makegenerictype.md + - name: Graphics + items: + - name: Supplemental API remarks + items: + - name: Matrix class + href: runtime-libraries/system-drawing-drawing2d-matrix.md + - name: The InternalsVisibleToAttribute class + href: runtime-libraries/system-runtime-compilerservices-internalsvisibletoattribute.md + - name: The RuntimeHelpers class + items: + - name: GetHashCode method + href: runtime-libraries/system-runtime-compilerservices-runtimehelpers-gethashcode.md + displayName: runtimehelpers + - name: The ComponentGuaranteesAttribute class + href: runtime-libraries/system-runtime-versioning-componentguaranteesattribute.md + - name: The AssemblyLoadContext class + href: runtime-libraries/system-runtime-loader-assemblyloadcontext.md + - name: The ProcessStartInfo class + items: + - name: UseShellExecute method + href: runtime-libraries/system-diagnostics-processstartinfo-useshellexecute.md + - name: The Environment class + items: + - name: GetEnvironmentVariable method + href: runtime-libraries/system-environment-getenvironmentvariable.md + - name: Execution model items: - - name: Settings - displayName: runtime configuration, configure runtime, configuration settings - href: ../core/runtime-config/index.md - - name: Compilation settings - href: ../core/runtime-config/compilation.md - - name: Debugging and profiling settings - href: ../core/runtime-config/debugging-profiling.md - - name: Garbage collector settings - href: ../core/runtime-config/garbage-collector.md - - name: Globalization settings - href: ../core/runtime-config/globalization.md - - name: Networking settings - href: ../core/runtime-config/networking.md - - name: Threading settings - href: ../core/runtime-config/threading.md - - name: WPF settings - href: ../core/runtime-config/wpf.md - - name: Troubleshoot app launch failures - href: ../core/runtime-discovery/troubleshoot-app-launch.md + - name: Common Language Runtime (CLR) + href: ../standard/clr.md + - name: Managed execution process + href: ../standard/managed-execution-process.md + - name: Assemblies + items: + - name: Overview + displayName: assembly,assemblies + href: ../standard/assembly/index.md + - name: Assembly contents + href: ../standard/assembly/contents.md + - name: Manifest + href: ../standard/assembly/manifest.md + - name: Security considerations + href: ../standard/assembly/security-considerations.md + - name: Versioning + items: + - name: Overview + displayName: versioning + href: ../standard/assembly/versioning.md + - name: The System.Version class + href: runtime-libraries/system-version.md + - name: Side-by-side execution + href: ../standard/assembly/side-by-side-execution.md + - name: Assembly file format + href: ../standard/assembly/file-format.md + - name: Unloadability in .NET Core + href: ../standard/assembly/unloadability.md + - name: Learn about reference assemblies + href: ../standard/assembly/reference-assemblies.md + - name: Resolve assembly loads + href: ../standard/assembly/resolve-loads.md + - name: Create assemblies + href: ../standard/assembly/create.md + - name: Assembly names + href: ../standard/assembly/names.md + - name: Find an assembly's fully qualified name + href: ../standard/assembly/find-fully-qualified-name.md + - name: Assembly location + href: ../standard/assembly/location.md + - name: Set assembly attributes + items: + - name: In code + href: ../standard/assembly/set-attributes.md + - name: In a project file + href: ../standard/assembly/set-attributes-project-file.md + - name: Strong-named assemblies + items: + - name: Overview + href: ../standard/assembly/strong-named.md + - name: Create and use strong-named assemblies + href: ../standard/assembly/create-use-strong-named.md + - name: Create a public-private key pair + href: ../standard/assembly/create-public-private-key-pair.md + - name: Sign an assembly with a strong name + href: ../standard/assembly/sign-strong-name.md + - name: Enhanced strong naming + href: ../standard/assembly/enhanced-strong-naming.md + - name: Reference a strong-named assembly + href: ../standard/assembly/reference-strong-named.md + - name: Disable strong-name bypass + href: ../standard/assembly/disable-strong-name-bypass-feature.md + - name: Delay-sign an assembly + href: ../standard/assembly/delay-sign.md + - name: View assembly contents + href: ../standard/assembly/view-contents.md + - name: Type forwarding in the CLR + href: ../standard/assembly/type-forwarding.md + - name: Friend assemblies + items: + - name: Overview + displayName: friend assembly,friend assemblies + href: ../standard/assembly/friend.md + - name: Create unsigned friend assemblies + href: ../standard/assembly/create-unsigned-friend.md + - name: Create signed friend assemblies + href: ../standard/assembly/create-signed-friend.md + - name: Determine if a file is an assembly + href: ../standard/assembly/identify.md + - name: Load and unload assemblies + href: ../standard/assembly/load-unload.md + - name: Embed types from managed assemblies in Visual Studio + href: ../standard/assembly/embed-types-visual-studio.md + - name: Inspect assembly contents using MetadataLoadContext + href: ../standard/assembly/inspect-contents-using-metadataloadcontext.md + - name: Metadata and self-describing components + items: + - name: Overview + href: ../standard/metadata-and-self-describing-components.md + - name: Supplemental API remarks + items: + - name: The AssemblyBuilder class + href: runtime-libraries/system-reflection-emit-assemblybuilder.md + - name: The MethodBuilder class + href: runtime-libraries/system-reflection-emit-methodbuilder.md + - name: The TypeBuilder class + href: runtime-libraries/system-reflection-emit-typebuilder.md + - name: The DynamicMethod class + href: runtime-libraries/system-reflection-emit-dynamicmethod.md + - name: The DebugDirectoryEntryType enum + href: runtime-libraries/system-reflection-portableexecutable-debugdirectoryentrytype.md + - name: Dependency loading + items: + - name: Overview + displayName: dependency loading + href: ../core/dependency-loading/overview.md + - name: Understand AssemblyLoadContext + href: ../core/dependency-loading/understanding-assemblyloadcontext.md + - name: Dependency loading details + items: + - name: Default dependency probing + href: ../core/dependency-loading/default-probing.md + - name: Load managed assemblies + href: ../core/dependency-loading/loading-managed.md + - name: Load satellite assemblies + href: ../core/dependency-loading/loading-resources.md + - name: Load unmanaged libraries + href: ../core/dependency-loading/loading-unmanaged.md + - name: Collect detailed assembly loading information + href: ../core/dependency-loading/collect-details.md + - name: Tutorials + items: + - name: Create a .NET application with plugins + href: ../core/tutorials/creating-app-with-plugin-support.md + - name: How to use and debug assembly unloadability + href: ../standard/assembly/unloadability.md + - name: Versioning + items: + - name: Overview + href: ../core/versions/index.md + - name: .NET version selection + href: ../core/versions/selection.md + - name: Configure .NET Runtime + items: + - name: Settings + displayName: runtime configuration, configure runtime, configuration settings + href: ../core/runtime-config/index.md + - name: Compilation settings + href: ../core/runtime-config/compilation.md + - name: Debugging and profiling settings + href: ../core/runtime-config/debugging-profiling.md + - name: Garbage collector settings + href: ../core/runtime-config/garbage-collector.md + - name: Globalization settings + href: ../core/runtime-config/globalization.md + - name: Networking settings + href: ../core/runtime-config/networking.md + - name: Threading settings + href: ../core/runtime-config/threading.md + - name: WPF settings + href: ../core/runtime-config/wpf.md + - name: Troubleshoot app launch failures + href: ../core/runtime-discovery/troubleshoot-app-launch.md diff --git a/docs/index.yml b/docs/index.yml index f6439ab7170b5..e17286fa44931 100644 --- a/docs/index.yml +++ b/docs/index.yml @@ -17,7 +17,7 @@ metadata: # highlightedContent section (optional) # Maximum of 8 items highlightedContent: -# itemType: architecture | concept | deploy | download | get-started | how-to-guide | learn | overview | quickstart | reference | tutorial | video | whats-new + # itemType: architecture | concept | deploy | download | get-started | how-to-guide | learn | overview | quickstart | reference | tutorial | video | whats-new items: # Card - title: "Download .NET" @@ -54,7 +54,7 @@ highlightedContent: # conceptualContent section (optional) conceptualContent: -# itemType: architecture | concept | deploy | download | get-started | how-to-guide | learn | overview | quickstart | reference | tutorial | video | whats-new + # itemType: architecture | concept | deploy | download | get-started | how-to-guide | learn | overview | quickstart | reference | tutorial | video | whats-new title: ".NET: Free. Cross platform. Open source." # < 60 chars (optional) summary: "A developer platform for building all your apps: web, mobile, desktop, gaming, IoT, and more. Supported on Windows, Linux, and macOS." items: @@ -67,7 +67,7 @@ conceptualContent: - url: core/tutorials/index.md itemType: tutorial text: .NET tutorials - - url: core/whats-new/dotnet-8.md + - url: core/whats-new/dotnet-8/overview.md itemType: whats-new text: What's new in .NET 8 - url: https://dotnetfoundation.org @@ -239,155 +239,154 @@ tools: # Card with summary style additionalContent: - -# Supports up to 3 sections + # Supports up to 3 sections sections: - title: Create your application # < 60 chars (optional) summary: "You can choose web, mobile, desktop, gaming, IoT, and more." # < 160 chars (optional) items: - # Card - - title: Web - links: - - url: /aspnet/core/tutorials - text: ASP.NET Core tutorials - - url: /aspnet/core - text: What is ASP.NET Core? - - url: /aspnet/core/tutorials/first-mvc-app/start-mvc - text: ASP.NET Core in Visual Studio - - url: /aspnet/mvc/overview/deployment/docker-aspnetmvc - text: ASP.NET MVC apps in Windows containers - - url: /aspnet/core/blazor/ - text: "Blazor: Interactive client-side web UI with .NET" - - url: fsharp/scenarios/web-development.md - text: F# for web development - # Card - - title: Mobile - links: - - url: /dotnet/maui - text: .NET Multi-platform App UI (.NET MAUI) - - url: /xamarin/xamarin-forms - text: Xamarin.Forms - - url: /xamarin/ios - text: Xamarin.iOS - - url: /xamarin/android - text: Xamarin.Android - - url: /azure/developer/mobile-apps - text: Develop Xamarin apps with Azure - # Card - - title: Desktop - links: - - url: /uwp - text: Universal Windows apps - - url: /dotnet/desktop/wpf/ - text: Windows Presentation Foundation (.NET 5+) - - url: /dotnet/desktop/wpf/?view=netframeworkdesktop-4.8&preserve-view=true - text: Windows Presentation Foundation (.NET Framework) - - url: /dotnet/desktop/winforms/ - text: Windows Forms (.NET 5+) - - url: /dotnet/desktop/winforms/?view=netframeworkdesktop-4.8&preserve-view=true - text: Windows Forms (.NET Framework) - - url: /dotnet/maui - text: .NET Multi-platform App UI (.NET MAUI) - - url: /xamarin/mac - text: Xamarin for macOS - # Card - - title: Microservices - links: - - url: architecture/dapr-for-net-developers/index.md - text: Dapr for .NET developers - - url: architecture/cloud-native/index.md - text: Cloud native .NET apps - - url: architecture/serverless/index.md - text: Serverless apps with Azure - - url: architecture/microservices/index.md - text: Architecture for containerized .NET apps - - url: core/extensions/cloud-service.md - text: Deploy a Worker Service to Azure - # Card - - title: Cloud - links: - - url: azure/index.yml - text: Azure for .NET developers - - url: /dotnet/aspire - text: .NET Aspire (Preview) - - url: ./azure/migration/app-service.md?preserve-view=true&view=azure-dotnet - text: Migrate on-premises .NET web apps or services - - url: ./azure/key-azure-services.md - text: Azure services for .NET developers - - url: ./azure/sdk/azure-sdk-for-dotnet.md - text: Azure SDK for .NET - - url: fsharp/using-fsharp-on-azure/deploying-and-managing.md - text: Deploying Azure Resources with F# - # Card - - title: Machine learning and AI - links: - - url: machine-learning/index.yml - text: Build custom AI solutions with ML.NET - - url: /azure/cognitive-services/ - text: Azure Cognitive Services - - url: /azure/machine-learning - text: Azure machine learning - - url: fsharp/scenarios/machine-learning.md - text: F# for Machine Leaning - # Card - - title: Game development - links: - - url: https://visualstudio.microsoft.com/vs/features/game-development/?utm_medium=microsoft&utm_source=learn.microsoft.com&utm_campaign=inline+link - text: Game development with Visual Studio - - url: https://docs.cryengine.com/display/CEPROG/C%23+Programming - text: Learn how to use CRYENGINE to build games with C# - - url: https://docs.monogame.net/?page=main - text: Build games with C# using the MonoGame library - - url: https://docs.unity3d.com/Manual/index.html - text: Learn how to use Unity to build 2D and 3D games with C# - # Card - - title: Internet of things (IoT) - links: - - url: iot/index.yml - text: .NET IoT Libraries - - url: iot/quickstarts/sensehat.md - text: Get started in 5 minutes - - url: iot/tutorials/blink-led.md - text: Blink an LED - - url: https://aka.ms/dotnet/beginnervideos/youtube/iot - text: .NET IoT 101 video series + # Card + - title: Web + links: + - url: /aspnet/core/tutorials + text: ASP.NET Core tutorials + - url: /aspnet/core + text: What is ASP.NET Core? + - url: /aspnet/core/tutorials/first-mvc-app/start-mvc + text: ASP.NET Core in Visual Studio + - url: /aspnet/mvc/overview/deployment/docker-aspnetmvc + text: ASP.NET MVC apps in Windows containers + - url: /aspnet/core/blazor/ + text: "Blazor: Interactive client-side web UI with .NET" + - url: fsharp/scenarios/web-development.md + text: F# for web development + # Card + - title: Mobile + links: + - url: /dotnet/maui + text: .NET Multi-platform App UI (.NET MAUI) + - url: /xamarin/xamarin-forms + text: Xamarin.Forms + - url: /xamarin/ios + text: Xamarin.iOS + - url: /xamarin/android + text: Xamarin.Android + - url: /azure/developer/mobile-apps + text: Develop Xamarin apps with Azure + # Card + - title: Desktop + links: + - url: /uwp + text: Universal Windows apps + - url: /dotnet/desktop/wpf/ + text: Windows Presentation Foundation (.NET 5+) + - url: /dotnet/desktop/wpf/?view=netframeworkdesktop-4.8&preserve-view=true + text: Windows Presentation Foundation (.NET Framework) + - url: /dotnet/desktop/winforms/ + text: Windows Forms (.NET 5+) + - url: /dotnet/desktop/winforms/?view=netframeworkdesktop-4.8&preserve-view=true + text: Windows Forms (.NET Framework) + - url: /dotnet/maui + text: .NET Multi-platform App UI (.NET MAUI) + - url: /xamarin/mac + text: Xamarin for macOS + # Card + - title: Microservices + links: + - url: architecture/dapr-for-net-developers/index.md + text: Dapr for .NET developers + - url: architecture/cloud-native/index.md + text: Cloud native .NET apps + - url: architecture/serverless/index.md + text: Serverless apps with Azure + - url: architecture/microservices/index.md + text: Architecture for containerized .NET apps + - url: core/extensions/cloud-service.md + text: Deploy a Worker Service to Azure + # Card + - title: Cloud + links: + - url: azure/index.yml + text: Azure for .NET developers + - url: /dotnet/aspire + text: .NET Aspire (Preview) + - url: ./azure/migration/app-service.md?preserve-view=true&view=azure-dotnet + text: Migrate on-premises .NET web apps or services + - url: ./azure/key-azure-services.md + text: Azure services for .NET developers + - url: ./azure/sdk/azure-sdk-for-dotnet.md + text: Azure SDK for .NET + - url: fsharp/using-fsharp-on-azure/deploying-and-managing.md + text: Deploying Azure Resources with F# + # Card + - title: Machine learning and AI + links: + - url: machine-learning/index.yml + text: Build custom AI solutions with ML.NET + - url: /azure/cognitive-services/ + text: Azure Cognitive Services + - url: /azure/machine-learning + text: Azure machine learning + - url: fsharp/scenarios/machine-learning.md + text: F# for Machine Leaning + # Card + - title: Game development + links: + - url: https://visualstudio.microsoft.com/vs/features/game-development/?utm_medium=microsoft&utm_source=learn.microsoft.com&utm_campaign=inline+link + text: Game development with Visual Studio + - url: https://docs.cryengine.com/display/CEPROG/C%23+Programming + text: Learn how to use CRYENGINE to build games with C# + - url: https://docs.monogame.net/?page=main + text: Build games with C# using the MonoGame library + - url: https://docs.unity3d.com/Manual/index.html + text: Learn how to use Unity to build 2D and 3D games with C# + # Card + - title: Internet of things (IoT) + links: + - url: iot/index.yml + text: .NET IoT Libraries + - url: iot/quickstarts/sensehat.md + text: Get started in 5 minutes + - url: iot/tutorials/blink-led.md + text: Blink an LED + - url: https://aka.ms/dotnet/beginnervideos/youtube/iot + text: .NET IoT 101 video series - title: API and language reference # < 60 chars (optional) summary: Search the .NET API and language reference documentation. # < 160 chars (optional) items: - # Card - - title: ".NET API reference" - summary: API reference documentation for .NET - url: ../api/index.md?view=net-8.0 - # Card - - title: ".NET Framework API reference" - summary: API reference documentation for .NET Framework - url: ../api/index.md?view=netframework-4.8&preserve-view=true - # Card - - title: "ASP.NET Core API reference" - summary: API reference documentation for ASP.NET Core - url: ../api/index.md?view=view=aspnetcore-8.0&preserve-view=true - # Card - - title: "ML.NET API reference" - summary: API reference documentation for ML.NET - url: ../api/index.md?view=ml-dotnet&preserve-view=true - # Card - - title: ".NET Platform Extensions API reference" - summary: API reference documentation for .NET Platform Extensions - url: ../api/index.md?view=dotnet-plat-ext-8.0&preserve-view=true - # Card - - title: "C# language reference" - summary: C# language reference and specification - url: csharp/language-reference/index.md - # Card - - title: "F# language reference" - summary: F# language reference - url: fsharp/language-reference/index.md - # Card - - title: "Visual Basic language reference" - summary: Visual Basic language reference and specification - url: visual-basic/language-reference/index.md + # Card + - title: ".NET API reference" + summary: API reference documentation for .NET + url: ../api/index.md?view=net-8.0 + # Card + - title: ".NET Framework API reference" + summary: API reference documentation for .NET Framework + url: ../api/index.md?view=netframework-4.8&preserve-view=true + # Card + - title: "ASP.NET Core API reference" + summary: API reference documentation for ASP.NET Core + url: ../api/index.md?view=view=aspnetcore-8.0&preserve-view=true + # Card + - title: "ML.NET API reference" + summary: API reference documentation for ML.NET + url: ../api/index.md?view=ml-dotnet&preserve-view=true + # Card + - title: ".NET Platform Extensions API reference" + summary: API reference documentation for .NET Platform Extensions + url: ../api/index.md?view=dotnet-plat-ext-8.0&preserve-view=true + # Card + - title: "C# language reference" + summary: C# language reference and specification + url: csharp/language-reference/index.md + # Card + - title: "F# language reference" + summary: F# language reference + url: fsharp/language-reference/index.md + # Card + - title: "Visual Basic language reference" + summary: Visual Basic language reference and specification + url: visual-basic/language-reference/index.md -# footer (optional) - footer: "Are you interested in contributing to the .NET docs? For more information, see our [contributor guide](/contribute/dotnet/dotnet-contribute)." + # footer (optional) + footer: "Are you interested in contributing to the .NET docs? For more information, see our [contributor guide](/contribute/dotnet/dotnet-contribute)." \ No newline at end of file diff --git a/docs/welcome.md b/docs/welcome.md index 80cf67d41f241..ea795c6462b2b 100644 --- a/docs/welcome.md +++ b/docs/welcome.md @@ -27,7 +27,7 @@ Also follow the latest .NET events: For information about the latest features added to the .NET implementations and supported languages, see the following articles: -- [What's new in .NET 8](core/whats-new/dotnet-8.md) +- [What's new in .NET 8](core/whats-new/dotnet-8/overview.md) - [What's new in .NET Framework](framework/whats-new/index.md) - [What's new in C# 12](./csharp/whats-new/csharp-12.md) - [What's new for Visual Basic](visual-basic/whats-new/index.md) diff --git a/docs/whats-new/dotnet-docs-mod2.md b/docs/whats-new/dotnet-docs-mod2.md index 2456ddfd03367..c35a8aa63c851 100644 --- a/docs/whats-new/dotnet-docs-mod2.md +++ b/docs/whats-new/dotnet-docs-mod2.md @@ -60,7 +60,7 @@ Welcome to what's new in the .NET docs for November 2023. This article lists som ### Updated articles -- [What's new in .NET 8](../core/whats-new/dotnet-8.md) - Add .NET Aspire +- [What's new in .NET 8](../core/whats-new/dotnet-8/overview.md) - Add .NET Aspire - [Runtime configuration options for garbage collection](../core/runtime-config/garbage-collector.md) - Runtimeconfig template - [Introduction to trim warnings](../core/deploying/trimming/fixing-warnings.md) - Improvements to trim warnings description and fixes diff --git a/docs/whats-new/index.yml b/docs/whats-new/index.yml index 7bf8c269f7dca..7fee1b2c2897e 100644 --- a/docs/whats-new/index.yml +++ b/docs/whats-new/index.yml @@ -8,85 +8,85 @@ metadata: ms.date: 02/01/2024 ms.topic: landing-page landingContent: -- title: .NET release updates - linkLists: - - linkListType: whats-new - links: - - text: .NET 8 updates - url: ../core/whats-new/dotnet-8.md -- title: Latest documentation updates - linkLists: - - linkListType: whats-new - links: - - text: January 2024 - url: dotnet-docs-mod1.md - - text: December 2023 - url: dotnet-docs-mod0.md - - text: November 2023 - url: dotnet-docs-mod2.md -- title: Find language updates - linkLists: - - linkListType: whats-new - links: - - text: What's new in C# 12 - url: ../csharp/whats-new/csharp-12.md - - text: What's new in F# 8 - url: ../fsharp/whats-new/fsharp-8.md - - text: What's new for Visual Basic - url: ../visual-basic/whats-new/index.md -- title: Get involved - contribute - linkLists: - - linkListType: overview - links: - - text: .NET docs repository - url: https://github.com/dotnet/docs/blob/main/README.md - - text: Project structure and labels for issues and pull requests - url: /contribute/dotnet/labels-projects - - text: .NET Foundation - url: https://dotnetfoundation.org/ - - linkListType: concept - links: - - text: Microsoft docs contributor guide - url: /contribute - - text: .NET docs contributor guide - url: /contribute/dotnet/dotnet-contribute -- title: .NET developers - linkLists: - - linkListType: download - links: - - text: Download the .NET SDK - url: https://dotnet.microsoft.com/download - - linkListType: sample - links: - - text: .NET samples browser - url: /samples/browse/?products=dotnet - - linkListType: get-started - links: - - text: .NET on Q&A - url: /answers/products/dotnet - - text: .NET tech community forums - url: https://techcommunity.microsoft.com/t5/net/ct-p/dotnet - - linkListType: whats-new - links: - - text: Community - url: https://dotnet.microsoft.com/platform/community -- title: Related what's new pages - linkLists: - - linkListType: whats-new - links: - - text: ASP.NET Core docs updates - url: /aspnet/core/whats-new/ - - text: Xamarin docs updates - url: /xamarin/whats-new/ - - text: .NET release notes - url: https://github.com/dotnet/core/blob/main/release-notes/README.md - - text: ASP.NET Core release notes - url: /aspnet/core/release-notes/aspnetcore-3.1 - - text: C# compiler (Roslyn) release notes - url: https://github.com/dotnet/roslyn/tree/main/docs/ide - - text: Visual Studio release notes - url: /visualstudio/releases/2019/release-notes - - text: Visual Studio for Mac release notes - url: /visualstudio/releasenotes/vs2019-mac-relnotes - - text: Visual Studio Code release notes - url: https://code.visualstudio.com/updates + - title: .NET release updates + linkLists: + - linkListType: whats-new + links: + - text: .NET 8 updates + url: ../core/whats-new/dotnet-8/overview.md + - title: Latest documentation updates + linkLists: + - linkListType: whats-new + links: + - text: January 2024 + url: dotnet-docs-mod1.md + - text: December 2023 + url: dotnet-docs-mod0.md + - text: November 2023 + url: dotnet-docs-mod2.md + - title: Find language updates + linkLists: + - linkListType: whats-new + links: + - text: What's new in C# 12 + url: ../csharp/whats-new/csharp-12.md + - text: What's new in F# 8 + url: ../fsharp/whats-new/fsharp-8.md + - text: What's new for Visual Basic + url: ../visual-basic/whats-new/index.md + - title: Get involved - contribute + linkLists: + - linkListType: overview + links: + - text: .NET docs repository + url: https://github.com/dotnet/docs/blob/main/README.md + - text: Project structure and labels for issues and pull requests + url: /contribute/dotnet/labels-projects + - text: .NET Foundation + url: https://dotnetfoundation.org/ + - linkListType: concept + links: + - text: Microsoft docs contributor guide + url: /contribute + - text: .NET docs contributor guide + url: /contribute/dotnet/dotnet-contribute + - title: .NET developers + linkLists: + - linkListType: download + links: + - text: Download the .NET SDK + url: https://dotnet.microsoft.com/download + - linkListType: sample + links: + - text: .NET samples browser + url: /samples/browse/?products=dotnet + - linkListType: get-started + links: + - text: .NET on Q&A + url: /answers/products/dotnet + - text: .NET tech community forums + url: https://techcommunity.microsoft.com/t5/net/ct-p/dotnet + - linkListType: whats-new + links: + - text: Community + url: https://dotnet.microsoft.com/platform/community + - title: Related what's new pages + linkLists: + - linkListType: whats-new + links: + - text: ASP.NET Core docs updates + url: /aspnet/core/whats-new/ + - text: Xamarin docs updates + url: /xamarin/whats-new/ + - text: .NET release notes + url: https://github.com/dotnet/core/blob/main/release-notes/README.md + - text: ASP.NET Core release notes + url: /aspnet/core/release-notes/aspnetcore-3.1 + - text: C# compiler (Roslyn) release notes + url: https://github.com/dotnet/roslyn/tree/main/docs/ide + - text: Visual Studio release notes + url: /visualstudio/releases/2019/release-notes + - text: Visual Studio for Mac release notes + url: /visualstudio/releasenotes/vs2019-mac-relnotes + - text: Visual Studio Code release notes + url: https://code.visualstudio.com/updates