diff --git a/docs/ai/microsoft-extensions-ai.md b/docs/ai/microsoft-extensions-ai.md
index ca4465bf29d7d..eaca86db326cf 100644
--- a/docs/ai/microsoft-extensions-ai.md
+++ b/docs/ai/microsoft-extensions-ai.md
@@ -259,7 +259,8 @@ For more samples, see the [dotnet/ai-samples](https://aka.ms/meai-samples) GitHu
## See also
+- [Request a response with structured output](./quickstarts/structured-output.md)
- [Build an AI chat app with .NET](./quickstarts/build-chat-app.md)
-- [.NET dependency injection](../core/extensions/dependency-injection.md)
-- [Rate limit an HTTP handler in .NET](../core/extensions/http-ratelimiter.md)
+- [Dependency injection in .NET](../core/extensions/dependency-injection.md)
- [Caching in .NET](../core/extensions/caching.md)
+- [Rate limit an HTTP handler in .NET](../core/extensions/http-ratelimiter.md)
diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md
index 3caa47007fe71..1738c15394ff3 100644
--- a/docs/azure/includes/dotnet-all.md
+++ b/docs/azure/includes/dotnet-all.md
@@ -29,7 +29,7 @@
| Conversational Language Understanding | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Language.Conversations/1.1.0)
NuGet [2.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Language.Conversations/2.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_1.1.0/sdk/cognitivelanguage/Azure.AI.Language.Conversations/)
GitHub [2.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_2.0.0-beta.2/sdk/cognitivelanguage/Azure.AI.Language.Conversations/) |
| Conversations Authoring | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.AI.Language.Conversations.Authoring/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations.Authoring-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations.Authoring_1.0.0-beta.1/sdk/cognitivelanguage/Azure.AI.Language.Conversations.Authoring/) |
| Core - Client - AMQP | NuGet [1.3.1](https://www.nuget.org/packages/Azure.Core.Amqp/1.3.1) | [docs](/dotnet/api/overview/azure/Core.Amqp-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core.Amqp_1.3.1/sdk/core/Azure.Core.Amqp/) |
-| Core - Client - Core | NuGet [1.45.0](https://www.nuget.org/packages/Azure.Core/1.45.0) | [docs](/dotnet/api/overview/azure/Core-readme) | GitHub [1.45.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core_1.45.0/sdk/core/Azure.Core/) |
+| Core - Client - Core | NuGet [1.46.0](https://www.nuget.org/packages/Azure.Core/1.46.0) | [docs](/dotnet/api/overview/azure/Core-readme) | GitHub [1.46.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core_1.46.0/sdk/core/Azure.Core/) |
| Core Newtonsoft Json | NuGet [2.0.0](https://www.nuget.org/packages/Microsoft.Azure.Core.NewtonsoftJson/2.0.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.Core.NewtonsoftJson-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.Core.NewtonsoftJson_2.0.0/sdk/core/Microsoft.Azure.Core.NewtonsoftJson/) |
| Core WCF Storage Queues | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.CoreWCF.Azure.StorageQueues/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Microsoft.CoreWCF.Azure.StorageQueues-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.CoreWCF.Azure.StorageQueues_1.0.0-beta.1/sdk/extension-wcf/Microsoft.CoreWCF.Azure.StorageQueues/) |
| Data Movement | NuGet [12.1.0](https://www.nuget.org/packages/Azure.Storage.DataMovement/12.1.0) | [docs](/dotnet/api/overview/azure/Storage.DataMovement-readme) | GitHub [12.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.DataMovement_12.1.0/sdk/storage/Azure.Storage.DataMovement/) |
@@ -97,12 +97,12 @@
| Schema Registry | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Data.SchemaRegistry/1.4.0) | [docs](/dotnet/api/overview/azure/Data.SchemaRegistry-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Data.SchemaRegistry_1.4.0/sdk/schemaregistry/Azure.Data.SchemaRegistry/) |
| Schema Registry - Avro | NuGet [1.0.1](https://www.nuget.org/packages/Microsoft.Azure.Data.SchemaRegistry.ApacheAvro/1.0.1) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.Data.SchemaRegistry.ApacheAvro-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.Data.SchemaRegistry.ApacheAvro_1.0.1/sdk/schemaregistry/Microsoft.Azure.Data.SchemaRegistry.ApacheAvro/) |
| Service Bus | NuGet [7.19.0](https://www.nuget.org/packages/Azure.Messaging.ServiceBus/7.19.0) | [docs](/dotnet/api/overview/azure/Messaging.ServiceBus-readme) | GitHub [7.19.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.ServiceBus_7.19.0/sdk/servicebus/Azure.Messaging.ServiceBus/) |
-| Storage - Blobs | NuGet [12.24.0](https://www.nuget.org/packages/Azure.Storage.Blobs/12.24.0) | [docs](/dotnet/api/overview/azure/Storage.Blobs-readme) | GitHub [12.24.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs_12.24.0/sdk/storage/Azure.Storage.Blobs/) |
-| Storage - Blobs Batch | NuGet [12.21.0](https://www.nuget.org/packages/Azure.Storage.Blobs.Batch/12.21.0) | [docs](/dotnet/api/overview/azure/Storage.Blobs.Batch-readme) | GitHub [12.21.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs.Batch_12.21.0/sdk/storage/Azure.Storage.Blobs.Batch/) |
-| Storage - Blobs ChangeFeed | NuGet [12.0.0-preview.54](https://www.nuget.org/packages/Azure.Storage.Blobs.ChangeFeed/12.0.0-preview.54) | [docs](/dotnet/api/overview/azure/Storage.Blobs.ChangeFeed-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [12.0.0-preview.54](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs.ChangeFeed_12.0.0-preview.54/sdk/storage/Azure.Storage.Blobs.ChangeFeed/) |
-| Storage - Files Data Lake | NuGet [12.22.0](https://www.nuget.org/packages/Azure.Storage.Files.DataLake/12.22.0) | [docs](/dotnet/api/overview/azure/Storage.Files.DataLake-readme) | GitHub [12.22.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.DataLake_12.22.0/sdk/storage/Azure.Storage.Files.DataLake/) |
-| Storage - Files Share | NuGet [12.22.0](https://www.nuget.org/packages/Azure.Storage.Files.Shares/12.22.0) | [docs](/dotnet/api/overview/azure/Storage.Files.Shares-readme) | GitHub [12.22.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.Shares_12.22.0/sdk/storage/Azure.Storage.Files.Shares/) |
-| Storage - Queues | NuGet [12.22.0](https://www.nuget.org/packages/Azure.Storage.Queues/12.22.0) | [docs](/dotnet/api/overview/azure/Storage.Queues-readme) | GitHub [12.22.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Queues_12.22.0/sdk/storage/Azure.Storage.Queues/) |
+| Storage - Blobs | NuGet [12.24.0](https://www.nuget.org/packages/Azure.Storage.Blobs/12.24.0)
NuGet [12.25.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Blobs/12.25.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Blobs-readme) | GitHub [12.24.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs_12.24.0/sdk/storage/Azure.Storage.Blobs/)
GitHub [12.25.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs_12.25.0-beta.1/sdk/storage/Azure.Storage.Blobs/) |
+| Storage - Blobs Batch | NuGet [12.21.0](https://www.nuget.org/packages/Azure.Storage.Blobs.Batch/12.21.0)
NuGet [12.22.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Blobs.Batch/12.22.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Blobs.Batch-readme) | GitHub [12.21.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs.Batch_12.21.0/sdk/storage/Azure.Storage.Blobs.Batch/)
GitHub [12.22.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs.Batch_12.22.0-beta.1/sdk/storage/Azure.Storage.Blobs.Batch/) |
+| Storage - Blobs ChangeFeed | NuGet [12.0.0-preview.55](https://www.nuget.org/packages/Azure.Storage.Blobs.ChangeFeed/12.0.0-preview.55) | [docs](/dotnet/api/overview/azure/Storage.Blobs.ChangeFeed-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [12.0.0-preview.55](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs.ChangeFeed_12.0.0-preview.55/sdk/storage/Azure.Storage.Blobs.ChangeFeed/) |
+| Storage - Files Data Lake | NuGet [12.22.0](https://www.nuget.org/packages/Azure.Storage.Files.DataLake/12.22.0)
NuGet [12.23.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Files.DataLake/12.23.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Files.DataLake-readme) | GitHub [12.22.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.DataLake_12.22.0/sdk/storage/Azure.Storage.Files.DataLake/)
GitHub [12.23.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.DataLake_12.23.0-beta.1/sdk/storage/Azure.Storage.Files.DataLake/) |
+| Storage - Files Share | NuGet [12.22.0](https://www.nuget.org/packages/Azure.Storage.Files.Shares/12.22.0)
NuGet [12.23.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Files.Shares/12.23.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Files.Shares-readme) | GitHub [12.22.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.Shares_12.22.0/sdk/storage/Azure.Storage.Files.Shares/)
GitHub [12.23.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.Shares_12.23.0-beta.1/sdk/storage/Azure.Storage.Files.Shares/) |
+| Storage - Queues | NuGet [12.22.0](https://www.nuget.org/packages/Azure.Storage.Queues/12.22.0)
NuGet [12.23.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Queues/12.23.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Queues-readme) | GitHub [12.22.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Queues_12.22.0/sdk/storage/Azure.Storage.Queues/)
GitHub [12.23.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Queues_12.23.0-beta.1/sdk/storage/Azure.Storage.Queues/) |
| Synapse - AccessControl | NuGet [1.0.0-preview.5](https://www.nuget.org/packages/Azure.Analytics.Synapse.AccessControl/1.0.0-preview.5) | [docs](/dotnet/api/overview/azure/Analytics.Synapse.AccessControl-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-preview.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Synapse.AccessControl_1.0.0-preview.5/sdk/synapse/Azure.Analytics.Synapse.AccessControl/) |
| Synapse - Artifacts | NuGet [1.0.0-preview.21](https://www.nuget.org/packages/Azure.Analytics.Synapse.Artifacts/1.0.0-preview.21) | [docs](/dotnet/api/overview/azure/Analytics.Synapse.Artifacts-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-preview.21](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Synapse.Artifacts_1.0.0-preview.21/sdk/synapse/Azure.Analytics.Synapse.Artifacts/) |
| Synapse - Managed Private Endpoints | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.Analytics.Synapse.ManagedPrivateEndpoints/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/Analytics.Synapse.ManagedPrivateEndpoints-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Synapse.ManagedPrivateEndpoints_1.0.0-beta.5/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/) |
@@ -132,7 +132,7 @@
| Functions extension for Azure Tables | NuGet [1.3.3](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Tables/1.3.3) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Tables-readme) | GitHub [1.3.3](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.Tables_1.3.3/sdk/tables/Microsoft.Azure.WebJobs.Extensions.Tables/) |
| Key Encryptor for .NET Data Protection | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Extensions.AspNetCore.DataProtection.Keys/1.4.0) | [docs](/dotnet/api/overview/azure/Extensions.AspNetCore.DataProtection.Keys-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Extensions.AspNetCore.DataProtection.Keys_1.4.0/sdk/extensions/Azure.Extensions.AspNetCore.DataProtection.Keys/) |
| Secrets Configuration Provider for .NET | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Extensions.AspNetCore.Configuration.Secrets/1.4.0) | [docs](/dotnet/api/overview/azure/Extensions.AspNetCore.Configuration.Secrets-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Extensions.AspNetCore.Configuration.Secrets_1.4.0/sdk/extensions/Azure.Extensions.AspNetCore.Configuration.Secrets/) |
-| Storage - Common | NuGet [12.23.0](https://www.nuget.org/packages/Azure.Storage.Common/12.23.0) | [docs](/dotnet/api/overview/azure/Storage.Common-readme) | GitHub [12.23.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Common_12.23.0/sdk/storage/Azure.Storage.Common/) |
+| Storage - Common | NuGet [12.23.0](https://www.nuget.org/packages/Azure.Storage.Common/12.23.0)
NuGet [12.24.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Common/12.24.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Common-readme) | GitHub [12.23.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Common_12.23.0/sdk/storage/Azure.Storage.Common/)
GitHub [12.24.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Common_12.24.0-beta.1/sdk/storage/Azure.Storage.Common/) |
| WebJobs Extensions - Event Grid | NuGet [3.4.4](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.EventGrid/3.4.4) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.EventGrid-readme) | GitHub [3.4.4](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.EventGrid_3.4.4/sdk/eventgrid/Microsoft.Azure.WebJobs.Extensions.EventGrid/) |
| WebJobs Extensions - Event Hubs | NuGet [6.5.1](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.EventHubs/6.5.1) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.EventHubs-readme) | GitHub [6.5.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.EventHubs_6.5.1/sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/) |
| WebJobs Extensions - Service Bus | NuGet [5.16.6](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.ServiceBus/5.16.6) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.ServiceBus-readme) | GitHub [5.16.6](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.ServiceBus_5.16.6/sdk/servicebus/Microsoft.Azure.WebJobs.Extensions.ServiceBus/) |
@@ -216,7 +216,7 @@
| Resource Management - Customer Insights | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.CustomerInsights/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.CustomerInsights-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CustomerInsights_1.0.0-beta.5/sdk/customer-insights/Azure.ResourceManager.CustomerInsights/) |
| Resource Management - Data Box | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.DataBox/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.DataBox-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DataBox_1.1.0/sdk/databox/Azure.ResourceManager.DataBox/) |
| Resource Management - Data Box Edge | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.DataBoxEdge/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.DataBoxEdge-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DataBoxEdge_1.1.1/sdk/databoxedge/Azure.ResourceManager.DataBoxEdge/) |
-| Resource Management - Data Factory | NuGet [1.7.0](https://www.nuget.org/packages/Azure.ResourceManager.DataFactory/1.7.0) | [docs](/dotnet/api/overview/azure/ResourceManager.DataFactory-readme) | GitHub [1.7.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DataFactory_1.7.0/sdk/datafactory/Azure.ResourceManager.DataFactory/) |
+| Resource Management - Data Factory | NuGet [1.8.0](https://www.nuget.org/packages/Azure.ResourceManager.DataFactory/1.8.0) | [docs](/dotnet/api/overview/azure/ResourceManager.DataFactory-readme) | GitHub [1.8.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DataFactory_1.8.0/sdk/datafactory/Azure.ResourceManager.DataFactory/) |
| Resource Management - Data Lake Analytics | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.DataLakeAnalytics/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.DataLakeAnalytics-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DataLakeAnalytics_1.1.1/sdk/datalake-analytics/Azure.ResourceManager.DataLakeAnalytics/) |
| Resource Management - Data Lake Store | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.DataLakeStore/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.DataLakeStore-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DataLakeStore_1.1.1/sdk/datalake-store/Azure.ResourceManager.DataLakeStore/) |
| Resource Management - Data Migration | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.DataMigration/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.DataMigration-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DataMigration_1.0.0-beta.5/sdk/datamigration/Azure.ResourceManager.DataMigration/) |
diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md
index d3b0a9334917f..fbaea06526a39 100644
--- a/docs/azure/includes/dotnet-new.md
+++ b/docs/azure/includes/dotnet-new.md
@@ -30,7 +30,7 @@
| Conversational Language Understanding | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Language.Conversations/1.1.0)
NuGet [2.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Language.Conversations/2.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_1.1.0/sdk/cognitivelanguage/Azure.AI.Language.Conversations/)
GitHub [2.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_2.0.0-beta.2/sdk/cognitivelanguage/Azure.AI.Language.Conversations/) |
| Conversations Authoring | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.AI.Language.Conversations.Authoring/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations.Authoring-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations.Authoring_1.0.0-beta.1/sdk/cognitivelanguage/Azure.AI.Language.Conversations.Authoring/) |
| Core - Client - AMQP | NuGet [1.3.1](https://www.nuget.org/packages/Azure.Core.Amqp/1.3.1) | [docs](/dotnet/api/overview/azure/Core.Amqp-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core.Amqp_1.3.1/sdk/core/Azure.Core.Amqp/) |
-| Core - Client - Core | NuGet [1.45.0](https://www.nuget.org/packages/Azure.Core/1.45.0) | [docs](/dotnet/api/overview/azure/Core-readme) | GitHub [1.45.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core_1.45.0/sdk/core/Azure.Core/) |
+| Core - Client - Core | NuGet [1.46.0](https://www.nuget.org/packages/Azure.Core/1.46.0) | [docs](/dotnet/api/overview/azure/Core-readme) | GitHub [1.46.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core_1.46.0/sdk/core/Azure.Core/) |
| Core Newtonsoft Json | NuGet [2.0.0](https://www.nuget.org/packages/Microsoft.Azure.Core.NewtonsoftJson/2.0.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.Core.NewtonsoftJson-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.Core.NewtonsoftJson_2.0.0/sdk/core/Microsoft.Azure.Core.NewtonsoftJson/) |
| Core WCF Storage Queues | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.CoreWCF.Azure.StorageQueues/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Microsoft.CoreWCF.Azure.StorageQueues-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.CoreWCF.Azure.StorageQueues_1.0.0-beta.1/sdk/extension-wcf/Microsoft.CoreWCF.Azure.StorageQueues/) |
| Data Movement | NuGet [12.1.0](https://www.nuget.org/packages/Azure.Storage.DataMovement/12.1.0) | [docs](/dotnet/api/overview/azure/Storage.DataMovement-readme) | GitHub [12.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.DataMovement_12.1.0/sdk/storage/Azure.Storage.DataMovement/) |
@@ -101,12 +101,12 @@
| Schema Registry | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Data.SchemaRegistry/1.4.0) | [docs](/dotnet/api/overview/azure/Data.SchemaRegistry-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Data.SchemaRegistry_1.4.0/sdk/schemaregistry/Azure.Data.SchemaRegistry/) |
| Schema Registry - Avro | NuGet [1.0.1](https://www.nuget.org/packages/Microsoft.Azure.Data.SchemaRegistry.ApacheAvro/1.0.1) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.Data.SchemaRegistry.ApacheAvro-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.Data.SchemaRegistry.ApacheAvro_1.0.1/sdk/schemaregistry/Microsoft.Azure.Data.SchemaRegistry.ApacheAvro/) |
| Service Bus | NuGet [7.19.0](https://www.nuget.org/packages/Azure.Messaging.ServiceBus/7.19.0) | [docs](/dotnet/api/overview/azure/Messaging.ServiceBus-readme) | GitHub [7.19.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.ServiceBus_7.19.0/sdk/servicebus/Azure.Messaging.ServiceBus/) |
-| Storage - Blobs | NuGet [12.24.0](https://www.nuget.org/packages/Azure.Storage.Blobs/12.24.0) | [docs](/dotnet/api/overview/azure/Storage.Blobs-readme) | GitHub [12.24.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs_12.24.0/sdk/storage/Azure.Storage.Blobs/) |
-| Storage - Blobs Batch | NuGet [12.21.0](https://www.nuget.org/packages/Azure.Storage.Blobs.Batch/12.21.0) | [docs](/dotnet/api/overview/azure/Storage.Blobs.Batch-readme) | GitHub [12.21.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs.Batch_12.21.0/sdk/storage/Azure.Storage.Blobs.Batch/) |
-| Storage - Blobs ChangeFeed | NuGet [12.0.0-preview.54](https://www.nuget.org/packages/Azure.Storage.Blobs.ChangeFeed/12.0.0-preview.54) | [docs](/dotnet/api/overview/azure/Storage.Blobs.ChangeFeed-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [12.0.0-preview.54](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs.ChangeFeed_12.0.0-preview.54/sdk/storage/Azure.Storage.Blobs.ChangeFeed/) |
-| Storage - Files Data Lake | NuGet [12.22.0](https://www.nuget.org/packages/Azure.Storage.Files.DataLake/12.22.0) | [docs](/dotnet/api/overview/azure/Storage.Files.DataLake-readme) | GitHub [12.22.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.DataLake_12.22.0/sdk/storage/Azure.Storage.Files.DataLake/) |
-| Storage - Files Share | NuGet [12.22.0](https://www.nuget.org/packages/Azure.Storage.Files.Shares/12.22.0) | [docs](/dotnet/api/overview/azure/Storage.Files.Shares-readme) | GitHub [12.22.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.Shares_12.22.0/sdk/storage/Azure.Storage.Files.Shares/) |
-| Storage - Queues | NuGet [12.22.0](https://www.nuget.org/packages/Azure.Storage.Queues/12.22.0) | [docs](/dotnet/api/overview/azure/Storage.Queues-readme) | GitHub [12.22.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Queues_12.22.0/sdk/storage/Azure.Storage.Queues/) |
+| Storage - Blobs | NuGet [12.24.0](https://www.nuget.org/packages/Azure.Storage.Blobs/12.24.0)
NuGet [12.25.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Blobs/12.25.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Blobs-readme) | GitHub [12.24.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs_12.24.0/sdk/storage/Azure.Storage.Blobs/)
GitHub [12.25.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs_12.25.0-beta.1/sdk/storage/Azure.Storage.Blobs/) |
+| Storage - Blobs Batch | NuGet [12.21.0](https://www.nuget.org/packages/Azure.Storage.Blobs.Batch/12.21.0)
NuGet [12.22.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Blobs.Batch/12.22.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Blobs.Batch-readme) | GitHub [12.21.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs.Batch_12.21.0/sdk/storage/Azure.Storage.Blobs.Batch/)
GitHub [12.22.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs.Batch_12.22.0-beta.1/sdk/storage/Azure.Storage.Blobs.Batch/) |
+| Storage - Blobs ChangeFeed | NuGet [12.0.0-preview.55](https://www.nuget.org/packages/Azure.Storage.Blobs.ChangeFeed/12.0.0-preview.55) | [docs](/dotnet/api/overview/azure/Storage.Blobs.ChangeFeed-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [12.0.0-preview.55](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs.ChangeFeed_12.0.0-preview.55/sdk/storage/Azure.Storage.Blobs.ChangeFeed/) |
+| Storage - Files Data Lake | NuGet [12.22.0](https://www.nuget.org/packages/Azure.Storage.Files.DataLake/12.22.0)
NuGet [12.23.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Files.DataLake/12.23.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Files.DataLake-readme) | GitHub [12.22.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.DataLake_12.22.0/sdk/storage/Azure.Storage.Files.DataLake/)
GitHub [12.23.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.DataLake_12.23.0-beta.1/sdk/storage/Azure.Storage.Files.DataLake/) |
+| Storage - Files Share | NuGet [12.22.0](https://www.nuget.org/packages/Azure.Storage.Files.Shares/12.22.0)
NuGet [12.23.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Files.Shares/12.23.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Files.Shares-readme) | GitHub [12.22.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.Shares_12.22.0/sdk/storage/Azure.Storage.Files.Shares/)
GitHub [12.23.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.Shares_12.23.0-beta.1/sdk/storage/Azure.Storage.Files.Shares/) |
+| Storage - Queues | NuGet [12.22.0](https://www.nuget.org/packages/Azure.Storage.Queues/12.22.0)
NuGet [12.23.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Queues/12.23.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Queues-readme) | GitHub [12.22.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Queues_12.22.0/sdk/storage/Azure.Storage.Queues/)
GitHub [12.23.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Queues_12.23.0-beta.1/sdk/storage/Azure.Storage.Queues/) |
| Synapse - AccessControl | NuGet [1.0.0-preview.5](https://www.nuget.org/packages/Azure.Analytics.Synapse.AccessControl/1.0.0-preview.5) | [docs](/dotnet/api/overview/azure/Analytics.Synapse.AccessControl-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-preview.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Synapse.AccessControl_1.0.0-preview.5/sdk/synapse/Azure.Analytics.Synapse.AccessControl/) |
| Synapse - Artifacts | NuGet [1.0.0-preview.21](https://www.nuget.org/packages/Azure.Analytics.Synapse.Artifacts/1.0.0-preview.21) | [docs](/dotnet/api/overview/azure/Analytics.Synapse.Artifacts-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-preview.21](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Synapse.Artifacts_1.0.0-preview.21/sdk/synapse/Azure.Analytics.Synapse.Artifacts/) |
| Synapse - Managed Private Endpoints | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.Analytics.Synapse.ManagedPrivateEndpoints/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/Analytics.Synapse.ManagedPrivateEndpoints-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Synapse.ManagedPrivateEndpoints_1.0.0-beta.5/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/) |
@@ -137,7 +137,7 @@
| Functions extension for Azure Tables | NuGet [1.3.3](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Tables/1.3.3) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Tables-readme) | GitHub [1.3.3](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.Tables_1.3.3/sdk/tables/Microsoft.Azure.WebJobs.Extensions.Tables/) |
| Key Encryptor for .NET Data Protection | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Extensions.AspNetCore.DataProtection.Keys/1.4.0) | [docs](/dotnet/api/overview/azure/Extensions.AspNetCore.DataProtection.Keys-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Extensions.AspNetCore.DataProtection.Keys_1.4.0/sdk/extensions/Azure.Extensions.AspNetCore.DataProtection.Keys/) |
| Secrets Configuration Provider for .NET | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Extensions.AspNetCore.Configuration.Secrets/1.4.0) | [docs](/dotnet/api/overview/azure/Extensions.AspNetCore.Configuration.Secrets-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Extensions.AspNetCore.Configuration.Secrets_1.4.0/sdk/extensions/Azure.Extensions.AspNetCore.Configuration.Secrets/) |
-| Storage - Common | NuGet [12.23.0](https://www.nuget.org/packages/Azure.Storage.Common/12.23.0) | [docs](/dotnet/api/overview/azure/Storage.Common-readme) | GitHub [12.23.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Common_12.23.0/sdk/storage/Azure.Storage.Common/) |
+| Storage - Common | NuGet [12.23.0](https://www.nuget.org/packages/Azure.Storage.Common/12.23.0)
NuGet [12.24.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Common/12.24.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Common-readme) | GitHub [12.23.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Common_12.23.0/sdk/storage/Azure.Storage.Common/)
GitHub [12.24.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Common_12.24.0-beta.1/sdk/storage/Azure.Storage.Common/) |
| WebJobs Extensions - Event Grid | NuGet [3.4.4](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.EventGrid/3.4.4) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.EventGrid-readme) | GitHub [3.4.4](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.EventGrid_3.4.4/sdk/eventgrid/Microsoft.Azure.WebJobs.Extensions.EventGrid/) |
| WebJobs Extensions - Event Hubs | NuGet [6.5.1](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.EventHubs/6.5.1) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.EventHubs-readme) | GitHub [6.5.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.EventHubs_6.5.1/sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/) |
| WebJobs Extensions - Service Bus | NuGet [5.16.6](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.ServiceBus/5.16.6) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.ServiceBus-readme) | GitHub [5.16.6](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.ServiceBus_5.16.6/sdk/servicebus/Microsoft.Azure.WebJobs.Extensions.ServiceBus/) |
@@ -222,7 +222,7 @@
| Resource Management - Customer Insights | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.CustomerInsights/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.CustomerInsights-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.CustomerInsights_1.0.0-beta.5/sdk/customer-insights/Azure.ResourceManager.CustomerInsights/) |
| Resource Management - Data Box | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.DataBox/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.DataBox-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DataBox_1.1.0/sdk/databox/Azure.ResourceManager.DataBox/) |
| Resource Management - Data Box Edge | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.DataBoxEdge/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.DataBoxEdge-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DataBoxEdge_1.1.1/sdk/databoxedge/Azure.ResourceManager.DataBoxEdge/) |
-| Resource Management - Data Factory | NuGet [1.7.0](https://www.nuget.org/packages/Azure.ResourceManager.DataFactory/1.7.0) | [docs](/dotnet/api/overview/azure/ResourceManager.DataFactory-readme) | GitHub [1.7.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DataFactory_1.7.0/sdk/datafactory/Azure.ResourceManager.DataFactory/) |
+| Resource Management - Data Factory | NuGet [1.8.0](https://www.nuget.org/packages/Azure.ResourceManager.DataFactory/1.8.0) | [docs](/dotnet/api/overview/azure/ResourceManager.DataFactory-readme) | GitHub [1.8.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DataFactory_1.8.0/sdk/datafactory/Azure.ResourceManager.DataFactory/) |
| Resource Management - Data Lake Analytics | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.DataLakeAnalytics/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.DataLakeAnalytics-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DataLakeAnalytics_1.1.1/sdk/datalake-analytics/Azure.ResourceManager.DataLakeAnalytics/) |
| Resource Management - Data Lake Store | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.DataLakeStore/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.DataLakeStore-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DataLakeStore_1.1.1/sdk/datalake-store/Azure.ResourceManager.DataLakeStore/) |
| Resource Management - Data Migration | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.DataMigration/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.DataMigration-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.DataMigration_1.0.0-beta.5/sdk/datamigration/Azure.ResourceManager.DataMigration/) |
diff --git a/docs/azure/sdk/snippets/unit-testing/UnitTestingSampleApp.csproj b/docs/azure/sdk/snippets/unit-testing/UnitTestingSampleApp.csproj
index 121c0e56deac2..d1ea44575d3cb 100644
--- a/docs/azure/sdk/snippets/unit-testing/UnitTestingSampleApp.csproj
+++ b/docs/azure/sdk/snippets/unit-testing/UnitTestingSampleApp.csproj
@@ -10,7 +10,7 @@
-
+
diff --git a/docs/csharp/index.yml b/docs/csharp/index.yml
index d8f3fc2978ada..9c985e9031b1f 100644
--- a/docs/csharp/index.yml
+++ b/docs/csharp/index.yml
@@ -226,17 +226,13 @@ additionalContent:
- title: Mobile and Desktop
links:
- url: /dotnet/desktop/wpf/
- text: Windows Presentation Foundation (.NET 5+)
+ text: Windows Presentation Foundation
- url: /dotnet/desktop/winforms/
- text: Windows Forms (.NET 5+)
+ text: Windows Forms
- url: /dotnet/maui
text: .NET Multi-platform App UI (.NET MAUI)
- url: /azure/developer/mobile-apps
text: Develop mobile apps with Azure
- - url: /dotnet/desktop/wpf/?view=netframeworkdesktop-4.8&preserve-view=true
- text: Windows Presentation Foundation (.NET Framework)
- - url: /dotnet/desktop/winforms/?view=netframeworkdesktop-4.8&preserve-view=true
- text: Windows Forms (.NET Framework)
# Card
- title: Microservices
links:
diff --git a/docs/csharp/misc/cs0136.md b/docs/csharp/misc/cs0136.md
index 7ae099c271593..33f022120c250 100644
--- a/docs/csharp/misc/cs0136.md
+++ b/docs/csharp/misc/cs0136.md
@@ -34,7 +34,28 @@ namespace MyNamespace
}
}
}
-```
+```
+
+The compiler reports this error regardless of the textual order of the variable declarations, as shown in the following example:
+
+```csharp
+// CS0136.cs
+namespace MyNamespace
+{
+ public class MyClass
+ {
+ public static void Main()
+ {
+ if (true)
+ {
+ int i = 1; // CS0136, hides i outside this block
+ }
+ int i = 0;
+ i++;
+ }
+ }
+}
+```
From the [C# Language Specification](~/_csharpstandard/standard/basic-concepts.md#73-declarations):
diff --git a/docs/csharp/whats-new/csharp-14.md b/docs/csharp/whats-new/csharp-14.md
index a29a00fbd7a13..e2b817a7ac480 100644
--- a/docs/csharp/whats-new/csharp-14.md
+++ b/docs/csharp/whats-new/csharp-14.md
@@ -136,9 +136,9 @@ Only the implementing declaration of a partial constructor can include a constru
The implementing declaration of a partial event must include `add` and `remove` accessors. The defining declaration declares a field-like event.
-## Null conditional assignment
+## Null-conditional assignment
-The null conditional member access operators, `?.` and ``?[]`, can now be used on the left hand side of an assignment or compound assignment.
+The null-conditional member access operators, `?.` and `?[]`, can now be used on the left hand side of an assignment or compound assignment.
Before C# 14, you needed to null-check a variable before assigning to a property:
@@ -157,9 +157,9 @@ customer?.Order = GetCurrentOrder();
The right side of the `=` operator is evaluated only when the left side isn't null. If `customer` is null, the code doesn't call `GetCurrentOrder`.
-In addition to assignment, you can use null conditional member access operators with compound assignment operators (`+=`, `-=`, and others). However, increment and decrement, `++` and `--`, aren't allowed.
+In addition to assignment, you can use null-conditional member access operators with compound assignment operators (`+=`, `-=`, and others). However, increment and decrement, `++` and `--`, aren't allowed.
-You can learn more in the language reference article on the [conditional member access](../language-reference/operators/member-access-operators.md#null-conditional-operators--and-) and the feature specification for [null conditional assignment](~/_csharplang/proposals/null-conditional-assignment.md)
+You can learn more in the language reference article on the [conditional member access](../language-reference/operators/member-access-operators.md#null-conditional-operators--and-) and the feature specification for [null-conditional assignment](~/_csharplang/proposals/null-conditional-assignment.md).
## See also
diff --git a/docs/framework/index.yml b/docs/framework/index.yml
index b5642da1a0e7a..944d778b0fc48 100644
--- a/docs/framework/index.yml
+++ b/docs/framework/index.yml
@@ -96,10 +96,10 @@ landingContent:
links:
- text: Desktop guide introduction
url: /dotnet/desktop/
- - text: .NET Framework WPF
- url: /dotnet/desktop/wpf/?view=netframeworkdesktop-4.8
- - text: .NET Framework Windows Forms
- url: /dotnet/desktop/winforms/?view=netframeworkdesktop-4.8
+ - text: WPF
+ url: /dotnet/desktop/wpf/
+ - text: Windows Forms
+ url: /dotnet/desktop/winforms/
# Card
- title: Create WPF apps
@@ -107,11 +107,11 @@ landingContent:
- linkListType: overview
links:
- text: Overview of WPF
- url: /dotnet/desktop/wpf/?view=netframeworkdesktop-4.8
+ url: /dotnet/desktop/wpf/
- linkListType: tutorial
links:
- text: Create your first WPF app in Visual Studio
- url: /dotnet/desktop/wpf/getting-started/walkthrough-my-first-wpf-desktop-application/?view=netframeworkdesktop-4.8
+ url: /dotnet/desktop/wpf/getting-started/walkthrough-my-first-wpf-desktop-application/
# Card
- title: Work with data using ADO.NET
diff --git a/docs/framework/toc.yml b/docs/framework/toc.yml
index 90d4938d6cd0a..633c25e4ef557 100644
--- a/docs/framework/toc.yml
+++ b/docs/framework/toc.yml
@@ -16,7 +16,7 @@ items:
- name: Overview
href: install/index.md
- name: Install on Windows and Windows Server
- href: install/on-windows-and-server.md
+ href: install/on-windows-and-server.md
- name: For developers
href: install/guide-for-developers.md
- name: Versions and dependencies
@@ -128,9 +128,9 @@ items:
- name: Overview
href: develop-client-apps.md
- name: Windows Presentation Foundation
- href: /dotnet/desktop/wpf/?view=netframeworkdesktop-4.8&preserve-view=true
+ href: /dotnet/desktop/wpf/
- name: Windows Forms
- href: /dotnet/desktop/winforms/?view=netframeworkdesktop-4.8&preserve-view=true
+ href: /dotnet/desktop/winforms/
- name: Service-oriented apps with WCF
href: wcf/
- name: Windows Workflow Foundation
diff --git a/docs/index.yml b/docs/index.yml
index e657475002e70..59be61d2d04a3 100644
--- a/docs/index.yml
+++ b/docs/index.yml
@@ -274,13 +274,9 @@ additionalContent:
- 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)
+ text: Windows Presentation Foundation
- 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)
+ text: Windows Forms
- url: /dotnet/maui
text: .NET Multi-platform App UI (.NET MAUI)
# Card
diff --git a/docs/standard/datetime/system-text-json-support.md b/docs/standard/datetime/system-text-json-support.md
index ab1b15a7814ce..e995755d37193 100644
--- a/docs/standard/datetime/system-text-json-support.md
+++ b/docs/standard/datetime/system-text-json-support.md
@@ -22,7 +22,7 @@ The `System.Text.Json` library parses and writes and , , ,
and types parse and write and
-text representations according to the extended profile of the ISO 8601-1:2019 format. For example, `2019-07-26T16:59:57-05:00`.
+text representations according to the extended profile of the ISO 8601-1:2019 format, for example, `2019-07-26T16:59:57-05:00`.
and data can be serialized with :
@@ -32,18 +32,16 @@ text representations according to the extended profile of the ISO 8601-1:2019 fo
:::code language="csharp" source="snippets/system-text-json-support/csharp/deserializing-with-jsonserializer-valid/Program.cs":::
-With default options, input and text representations must conform to the extended ISO 8601-1:2019 profile.
-Attempting to deserialize representations that don't conform to the profile will cause to throw a :
+With default options, input and text representations must conform to the extended ISO 8601-1:2019 profile. If you attempt to deserialize representations that don't conform to the profile, throws a :
:::code language="csharp" source="snippets/system-text-json-support/csharp/deserializing-with-jsonserializer-error/Program.cs":::
-The provides structured access to the contents of a JSON payload, including
-and representations. The following example shows how to calculate the average
+ provides structured access to the contents of a JSON payload, including and representations. The following example shows how to calculate the average
temperature on Mondays from a collection of temperatures:
:::code language="csharp" source="snippets/system-text-json-support/csharp/computing-with-jsondocument-valid/Program.cs":::
-Attempting to compute the average temperature given a payload with non-compliant representations will cause to throw a :
+If you attempt to compute the average temperature given a payload with non-compliant representations, throws a :
:::code language="csharp" source="snippets/system-text-json-support/csharp/computing-with-jsondocument-error/Program.cs":::
@@ -55,7 +53,7 @@ The lower level writes will cause it to throw a :
+If you attempt to read non-compliant formats with , it throws a :
:::code language="csharp" source="snippets/system-text-json-support/csharp/reading-with-utf8jsonreader-error/Program.cs":::
@@ -67,8 +65,12 @@ Attempting to read non-compliant formats with
-If you want the serializer to perform custom parsing or formatting, you can implement [custom converters](xref:System.Text.Json.Serialization.JsonConverter%601).
-Here are a few examples:
+If you want the serializer to perform custom parsing or formatting, you can implement [custom converters](xref:System.Text.Json.Serialization.JsonConverter%601). The following sections show a few examples:
+
+- [DateTime(Offset).Parse and DateTime(Offset).ToString](#datetimeoffsetparse-and-datetimeoffsettostring)
+- [Utf8Parser and Utf8Formatter](#-and-)
+- [Use DateTime(Offset).Parse as a fallback](#use-datetimeoffsetparse-as-a-fallback)
+- [Use Unix epoch date format](#use-unix-epoch-date-format)
#### DateTime(Offset).Parse and DateTime(Offset).ToString
@@ -135,7 +137,7 @@ and then written with the
If you want to read a custom or text representation with ,
-you can get the value of the current JSON token as a using method, then parse the value using custom logic.
+you can get the value of the current JSON token as a using the method, then parse the value using custom logic.
The following example shows how a custom text representation can be retrieved using the method,
then parsed using :
@@ -146,24 +148,23 @@ then parsed using defines the following components for
-date and time representations. These components are used to define various supported levels of granularity
+The extended ISO 8601-1:2019 profile implemented in defines the following components for date and time representations. These components are used to define various supported levels of granularity
when parsing and formatting and representations.
-| Component | Format | Description |
-|-----------------|-----------------------------|---------------------------------------------------------------------------------|
-| Year | "yyyy" | 0001-9999 |
-| Month | "MM" | 01-12 |
-| Day | "dd" | 01-28, 01-29, 01-30, 01-31 based on month/year. |
-| Hour | "HH" | 00-23 |
-| Minute | "mm" | 00-59 |
-| Second | "ss" | 00-59 |
-| Second fraction | "FFFFFFF" | Minimum of one digit, maximum of 16 digits. |
-| Time offset | "K" | Either "Z" or "('+'/'-')HH':'mm". |
-| Partial time | "HH':'mm':'ss[FFFFFFF]" | Time without UTC offset information. |
-| Full date | "yyyy'-'MM'-'dd" | Calendar date. |
-| Full time | "'Partial time'K" | UTC of day or Local time of day with the time offset between local time and UTC.|
-| Date time | "'Full date''T''Full time'" | Calendar date and time of day, for example, 2019-07-26T16:59:57-05:00. |
+| Component | Format | Description |
+|-----------------|-------------------------|-------------------------------------------------|
+| Year | "yyyy" | 0001-9999 |
+| Month | "MM" | 01-12 |
+| Day | "dd" | 01-28, 01-29, 01-30, 01-31 based on month/year. |
+| Hour | "HH" | 00-23 |
+| Minute | "mm" | 00-59 |
+| Second | "ss" | 00-59 |
+| Second fraction | "FFFFFFF" | Minimum of one digit, maximum of 16 digits. |
+| Time offset | "K" | Either "Z" or "('+'/'-')HH':'mm". |
+| Partial time | "HH':'mm':'ss[FFFFFFF]" | Time without UTC offset information. |
+| Full date | "yyyy'-'MM'-'dd" | Calendar date. |
+| Full time | "'Partial time'K" | UTC of day or Local time of day with the time offset between local time and UTC.|
+| Date time | "'Full date''T''Full time'" | Calendar date and time of day, for example, 2019-07-26T16:59:57-05:00. |
### Support for parsing
diff --git a/docs/standard/serialization/system-text-json/migrate-from-newtonsoft.md b/docs/standard/serialization/system-text-json/migrate-from-newtonsoft.md
index 2f3f5e3cc8453..48c62c454d348 100644
--- a/docs/standard/serialization/system-text-json/migrate-from-newtonsoft.md
+++ b/docs/standard/serialization/system-text-json/migrate-from-newtonsoft.md
@@ -23,8 +23,8 @@ The `System.Text.Json` namespace provides functionality for serializing to and d
* .NET Framework 4.6.2 and later versions
* .NET Core 2.0, 2.1, and 2.2
->[!TIP]
-> You can use AI assistance to [migrate from `Newtonsoft.Json` with GitHub Copilot](#use-github-copilot-to-migrate).
+> [!TIP]
+> You can use AI assistance to [migrate from `Newtonsoft.Json`](#use-github-copilot-to-migrate).
`System.Text.Json` focuses primarily on performance, security, and standards compliance. It has some key differences in default behavior and doesn't aim to have feature parity with `Newtonsoft.Json`. For some scenarios, `System.Text.Json` currently has no built-in functionality, but there are recommended workarounds. For other scenarios, workarounds are impractical.
@@ -380,7 +380,7 @@ Starting in .NET 7, you can use the C# `required` modifier or the supports ISO 8601-1:2019, including the RFC 3339 profile. This format is widely adopted, unambiguous, and makes round trips precisely. To use any other format, create a custom converter. For example, the following converters serialize and deserialize JSON that uses Unix epoch format with or without a time zone offset (values such as `/Date(1590863400000-0700)/` or `/Date(1590863400000)/`):
+ supports ISO 8601-1:2019, including the RFC 3339 profile. This format is widely adopted, unambiguous, and makes round trips precisely. To use any other format, create a custom converter. For example, the following converters serialize and deserialize JSON that uses Unix epoch format with or without a time zone offset (values such as `/Date(1590863400000-0700)/` or `/Date(1590863400000)/`):
:::code language="csharp" source="snippets/how-to-contd/csharp/CustomConverterUnixEpochDate.cs" id="ConverterOnly":::
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CopyOptions.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CopyOptions.cs
index 4e697168beb21..219ed52e68e0e 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CopyOptions.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CopyOptions.cs
@@ -11,7 +11,7 @@ public class Forecast
public class Program
{
- public static void Main()
+ public static void Run()
{
Forecast forecast = new()
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterHandleNull.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterHandleNull.cs
index c390dfcf855eb..1d87b2bfb8591 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterHandleNull.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterHandleNull.cs
@@ -31,7 +31,7 @@ public override void Write(
public class Program
{
- public static void Main()
+ public static void Run()
{
string json = @"{""x"":1,""y"":2,""Description"":null}";
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterInferredTypesToObject.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterInferredTypesToObject.cs
index ecb5772bade77..aa4ef9ee74199 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterInferredTypesToObject.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterInferredTypesToObject.cs
@@ -35,7 +35,7 @@ public class WeatherForecast
public class Program
{
- public static void Main()
+ public static void Run()
{
string jsonString = """
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterPreserveReferences.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterPreserveReferences.cs
index 7ef0a06ff8a16..4768cef270e2e 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterPreserveReferences.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterPreserveReferences.cs
@@ -101,7 +101,7 @@ class MyReferenceHandler : ReferenceHandler
public class Program
{
- public static void Main()
+ public static void Run()
{
Employee tyler = new()
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterUnixEpochDate.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterUnixEpochDate.cs
index beef9eaf2fd06..902e101494659 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterUnixEpochDate.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterUnixEpochDate.cs
@@ -2,29 +2,50 @@
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Text.RegularExpressions;
+using Newtonsoft.Json;
namespace CustomConverterUnixEpochDate
{
class Program
{
- public static void Main()
+ public static void STJExample(DateTimeOffset date)
{
var forecast = new Forecast()
{
- Date = DateTimeOffset.Now,
+ Date = date,
TemperatureCelsius = 19,
Summary = "warm"
};
var options = new JsonSerializerOptions();
options.Converters.Add(new UnixEpochDateTimeOffsetConverter());
- options.WriteIndented = true;
- string json = JsonSerializer.Serialize(forecast, options);
- Console.WriteLine(json);
+ string json = System.Text.Json.JsonSerializer.Serialize(forecast, options);
+ Console.WriteLine($"System.Text.Json: {json}");
- Forecast forecastDeserialized = JsonSerializer.Deserialize(json, options)!;
- Console.WriteLine($"Deserialized date = {forecastDeserialized.Date}");
+ Forecast forecastDeserialized = System.Text.Json.JsonSerializer.Deserialize(json, options)!;
+ Console.WriteLine($"System.Text.Json deserialized date = {forecastDeserialized.Date}");
+ }
+
+ public static void NewtonsoftExample(DateTimeOffset date)
+ {
+ var forecast = new Forecast()
+ {
+ Date = date,
+ TemperatureCelsius = 19,
+ Summary = "warm"
+ };
+
+ var settings = new JsonSerializerSettings
+ {
+ DateFormatHandling = DateFormatHandling.MicrosoftDateFormat,
+ };
+
+ string json = JsonConvert.SerializeObject(forecast, settings);
+ Console.WriteLine($"{Environment.NewLine}Newtonsoft: {json}");
+
+ Forecast forecastDeserialized = JsonConvert.DeserializeObject(json, settings)!;
+ Console.WriteLine($"Newtonsoft deserialized date = {forecastDeserialized.Date}");
}
}
@@ -36,23 +57,28 @@ public class Forecast
}
//
- sealed class UnixEpochDateTimeOffsetConverter : JsonConverter
+ sealed class UnixEpochDateTimeOffsetConverter : System.Text.Json.Serialization.JsonConverter
{
static readonly DateTimeOffset s_epoch = new(1970, 1, 1, 0, 0, 0, TimeSpan.Zero);
- static readonly Regex s_regex = new("^/Date\\(([+-]*\\d+)([+-])(\\d{2})(\\d{2})\\)/$", RegexOptions.CultureInvariant);
+ static readonly Regex s_regex = new(
+ "^/Date\\(([+-]*\\d+)([+-])(\\d{2})(\\d{2})\\)/$",
+ RegexOptions.CultureInvariant);
- public override DateTimeOffset Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+ public override DateTimeOffset Read(
+ ref Utf8JsonReader reader,
+ Type typeToConvert,
+ JsonSerializerOptions options)
{
string formatted = reader.GetString()!;
Match match = s_regex.Match(formatted);
if (
!match.Success
- || !long.TryParse(match.Groups[1].Value, System.Globalization.NumberStyles.Integer, CultureInfo.InvariantCulture, out long unixTime)
- || !int.TryParse(match.Groups[3].Value, System.Globalization.NumberStyles.Integer, CultureInfo.InvariantCulture, out int hours)
- || !int.TryParse(match.Groups[4].Value, System.Globalization.NumberStyles.Integer, CultureInfo.InvariantCulture, out int minutes))
+ || !long.TryParse(match.Groups[1].Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out long unixTime)
+ || !int.TryParse(match.Groups[3].Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out int hours)
+ || !int.TryParse(match.Groups[4].Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out int minutes))
{
- throw new JsonException();
+ throw new System.Text.Json.JsonException();
}
int sign = match.Groups[2].Value[0] == '+' ? 1 : -1;
@@ -61,12 +87,18 @@ public override DateTimeOffset Read(ref Utf8JsonReader reader, Type typeToConver
return s_epoch.AddMilliseconds(unixTime).ToOffset(utcOffset);
}
- public override void Write(Utf8JsonWriter writer, DateTimeOffset value, JsonSerializerOptions options)
+ public override void Write(
+ Utf8JsonWriter writer,
+ DateTimeOffset value,
+ JsonSerializerOptions options)
{
- long unixTime = Convert.ToInt64((value - s_epoch).TotalMilliseconds);
+ long unixTime = value.ToUnixTimeMilliseconds();
+
TimeSpan utcOffset = value.Offset;
- string formatted = string.Create(CultureInfo.InvariantCulture, $"/Date({unixTime}{(utcOffset >= TimeSpan.Zero ? "+" : "-")}{utcOffset:hhmm})/");
+ string formatted = string.Create(
+ CultureInfo.InvariantCulture,
+ $"/Date({unixTime}{(utcOffset >= TimeSpan.Zero ? "+" : "-")}{utcOffset:hhmm})/");
writer.WriteStringValue(formatted);
}
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterUnixEpochDateNoZone.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterUnixEpochDateNoZone.cs
index a7dc51737d5f1..2912a86e7cda9 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterUnixEpochDateNoZone.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/CustomConverterUnixEpochDateNoZone.cs
@@ -1,30 +1,50 @@
using System.Globalization;
using System.Text.Json;
-using System.Text.Json.Serialization;
using System.Text.RegularExpressions;
+using Newtonsoft.Json;
namespace CustomConverterUnixEpochDateNoZone
{
class Program
{
- public static void Main()
+ public static void STJExample(DateTime date)
{
var forecast = new Forecast()
{
- Date = DateTime.Now,
+ Date = date,
TemperatureCelsius = 19,
Summary = "warm"
};
var options = new JsonSerializerOptions();
options.Converters.Add(new UnixEpochDateTimeConverter());
- options.WriteIndented = true;
- string json = JsonSerializer.Serialize(forecast, options);
- Console.WriteLine(json);
+ string json = System.Text.Json.JsonSerializer.Serialize(forecast, options);
+ Console.WriteLine($"System.Text.Json: {json}");
- Forecast forecastDeserialized = JsonSerializer.Deserialize(json, options)!;
- Console.WriteLine($"Deserialized date = {forecastDeserialized.Date}");
+ Forecast forecastDeserialized = System.Text.Json.JsonSerializer.Deserialize(json, options)!;
+ Console.WriteLine($"System.Text.Json deserialized date = {forecastDeserialized.Date}");
+ }
+
+ public static void NewtonsoftExample(DateTime date)
+ {
+ var forecast = new Forecast()
+ {
+ Date = date,
+ TemperatureCelsius = 19,
+ Summary = "warm"
+ };
+
+ var settings = new JsonSerializerSettings
+ {
+ DateFormatHandling = DateFormatHandling.MicrosoftDateFormat,
+ };
+
+ string json = JsonConvert.SerializeObject(forecast, settings);
+ Console.WriteLine($"{Environment.NewLine}Newtonsoft: {json}");
+
+ Forecast forecastDeserialized = JsonConvert.DeserializeObject(json, settings)!;
+ Console.WriteLine($"Newtonsoft deserialized date = {forecastDeserialized.Date}");
}
}
@@ -36,29 +56,37 @@ public class Forecast
}
//
- sealed class UnixEpochDateTimeConverter : JsonConverter
+ sealed class UnixEpochDateTimeConverter : System.Text.Json.Serialization.JsonConverter
{
static readonly DateTime s_epoch = new(1970, 1, 1, 0, 0, 0);
- static readonly Regex s_regex = new("^/Date\\(([+-]*\\d+)\\)/$", RegexOptions.CultureInvariant);
+ static readonly Regex s_regex = new(
+ "^/Date\\(([+-]*\\d+)\\)/$",
+ RegexOptions.CultureInvariant);
- public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+ public override DateTime Read(
+ ref Utf8JsonReader reader,
+ Type typeToConvert,
+ JsonSerializerOptions options)
{
string formatted = reader.GetString()!;
Match match = s_regex.Match(formatted);
if (
- !match.Success
- || !long.TryParse(match.Groups[1].Value, System.Globalization.NumberStyles.Integer, CultureInfo.InvariantCulture, out long unixTime))
+ !match.Success
+ || !long.TryParse(match.Groups[1].Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out long unixTime))
{
- throw new JsonException();
+ throw new System.Text.Json.JsonException();
}
return s_epoch.AddMilliseconds(unixTime);
}
- public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
+ public override void Write(
+ Utf8JsonWriter writer,
+ DateTime value,
+ JsonSerializerOptions options)
{
- long unixTime = Convert.ToInt64((value - s_epoch).TotalMilliseconds);
+ long unixTime = (value - s_epoch).Ticks / TimeSpan.TicksPerMillisecond;
string formatted = string.Create(CultureInfo.InvariantCulture, $"/Date({unixTime})/");
writer.WriteStringValue(formatted);
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/Fields.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/Fields.cs
index 7d8e9268a532b..9d3b719d0099e 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/Fields.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/Fields.cs
@@ -22,7 +22,7 @@ public class Forecast2
public class Program
{
- public static void Main()
+ public static void Run()
{
string json = """
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/GuidReferenceResolverExample.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/GuidReferenceResolverExample.cs
index a44b95bc98c08..e0f7046ff0e34 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/GuidReferenceResolverExample.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/GuidReferenceResolverExample.cs
@@ -49,7 +49,7 @@ public override void AddReference(string reference, object value)
static class Program
{
- public static void Main()
+ public static void Run()
{
Person tyler = new() { Id = Guid.NewGuid(), Name = "Tyler" };
Person adrian = new() { Id = Guid.NewGuid(), Name = "Adrian" };
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/HttpClientExtensionMethods.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/HttpClientExtensionMethods.cs
index 968839a06cea7..ed3e74c146d99 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/HttpClientExtensionMethods.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/HttpClientExtensionMethods.cs
@@ -12,7 +12,7 @@ public class User
public class Program
{
- public static async Task Main()
+ public static async Task Run()
{
using HttpClient client = new()
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/IgnoreNullOnSerialize.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/IgnoreNullOnSerialize.cs
index bbdfbd68efe5d..13c4d6358a91e 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/IgnoreNullOnSerialize.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/IgnoreNullOnSerialize.cs
@@ -12,7 +12,7 @@ public class Forecast
public class Program
{
- public static void Main()
+ public static void Run()
{
Forecast forecast = new()
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/IgnoreValueDefaultOnSerialize.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/IgnoreValueDefaultOnSerialize.cs
index 337248b555fd5..3a72ada9faf89 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/IgnoreValueDefaultOnSerialize.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/IgnoreValueDefaultOnSerialize.cs
@@ -12,7 +12,7 @@ public class Forecast
public class Program
{
- public static void Main()
+ public static void Run()
{
Forecast forecast = new()
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/ImmutableTypes.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/ImmutableTypes.cs
index d0ae803c2eae8..ae6af185849ce 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/ImmutableTypes.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/ImmutableTypes.cs
@@ -16,7 +16,7 @@ public Forecast(DateTime date, int temperatureC, string summary) =>
public class Program
{
- public static void Main()
+ public static void Run()
{
string json = """
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/ImmutableTypesCtorParms.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/ImmutableTypesCtorParms.cs
index c71418fa67b20..51a4e7c5dfa31 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/ImmutableTypesCtorParms.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/ImmutableTypesCtorParms.cs
@@ -17,7 +17,7 @@ public Forecast(DateTime date, int temperatureC, string summary) =>
public class Program
{
- public static void Main()
+ public static void Run()
{
string json = """
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/JsonIgnoreAttributeExample.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/JsonIgnoreAttributeExample.cs
index efacab04b91d8..e08b79ac15124 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/JsonIgnoreAttributeExample.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/JsonIgnoreAttributeExample.cs
@@ -17,7 +17,7 @@ public class Forecast
public class Program
{
- public static void Main()
+ public static void Run()
{
Forecast forecast = new()
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/NonPublicAccessors.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/NonPublicAccessors.cs
index fbd9fd74e9ac5..ad619605696ec 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/NonPublicAccessors.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/NonPublicAccessors.cs
@@ -16,7 +16,7 @@ public class Forecast
public class Program
{
- public static void Main()
+ public static void Run()
{
string json = """
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/NonStringKeyDictionary.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/NonStringKeyDictionary.cs
index b89446c6e505e..acd5c31ac1027 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/NonStringKeyDictionary.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/NonStringKeyDictionary.cs
@@ -4,7 +4,7 @@ namespace NonStringKeyDictionary
{
public class Program
{
- public static void Main()
+ public static void Run()
{
Dictionary numbers = new()
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/OptionsDefaults.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/OptionsDefaults.cs
index 62ee51e11ae3c..b8fc04ed30a91 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/OptionsDefaults.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/OptionsDefaults.cs
@@ -11,7 +11,7 @@ public class Forecast
public class Program
{
- public static void Main()
+ public static void Run()
{
Forecast forecast = new()
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/PreserveReferences.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/PreserveReferences.cs
index 3319ae7b7c04a..0513028610f99 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/PreserveReferences.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/PreserveReferences.cs
@@ -12,7 +12,7 @@ public class Employee
public class Program
{
- public static void Main()
+ public static void Run()
{
Employee tyler = new()
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/PreserveReferencesMultipleCalls.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/PreserveReferencesMultipleCalls.cs
index f22ef84056f03..cb36f09fd9854 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/PreserveReferencesMultipleCalls.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/PreserveReferencesMultipleCalls.cs
@@ -68,7 +68,7 @@ class MyReferenceHandler : ReferenceHandler
public class Program
{
- public static void Main()
+ public static void Run()
{
Employee tyler = new()
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/Program.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/Program.cs
index 8cb05c0c4dbf4..84b4a05a6c5bf 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/Program.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/Program.cs
@@ -5,87 +5,91 @@ class Program
static async Task Main(string[] args)
{
Console.WriteLine("======== Custom converter Unix Epoch DateTimeOffset =========");
- CustomConverterUnixEpochDate.Program.Main();
+ DateTimeOffset date = DateTimeOffset.Now;
+ CustomConverterUnixEpochDate.Program.STJExample(date);
+ CustomConverterUnixEpochDate.Program.NewtonsoftExample(date);
Console.WriteLine();
Console.WriteLine("======== Custom converter Unix Epoch DateTime =========");
- CustomConverterUnixEpochDateNoZone.Program.Main();
+ DateTime date2 = DateTime.Now;
+ CustomConverterUnixEpochDateNoZone.Program.STJExample(date2);
+ CustomConverterUnixEpochDateNoZone.Program.NewtonsoftExample(date2);
Console.WriteLine();
Console.WriteLine("======== Preserve references =========");
- PreserveReferences.Program.Main();
+ PreserveReferences.Program.Run();
Console.WriteLine();
Console.WriteLine("======== Custom converter Preserve references =========");
- CustomConverterPreserveReferences.Program.Main();
+ CustomConverterPreserveReferences.Program.Run();
Console.WriteLine();
Console.WriteLine("======== Preserve references Multiple calls =========");
- PreserveReferencesMultipleCalls.Program.Main();
+ PreserveReferencesMultipleCalls.Program.Run();
Console.WriteLine();
Console.WriteLine("======== Immutable types =========");
- ImmutableTypes.Program.Main();
+ ImmutableTypes.Program.Run();
Console.WriteLine();
Console.WriteLine("======== Immutable types =========");
- ImmutableTypesCtorParms.Program.Main();
+ ImmutableTypesCtorParms.Program.Run();
Console.WriteLine();
Console.WriteLine("======== Record support =========");
- Records.Program.Main();
+ Records.Program.Run();
Console.WriteLine();
Console.WriteLine("======== Field support =========");
- Fields.Program.Main();
+ Fields.Program.Run();
Console.WriteLine();
Console.WriteLine("======== Non-string key dictionary =========");
- NonStringKeyDictionary.Program.Main();
+ NonStringKeyDictionary.Program.Run();
Console.WriteLine();
Console.WriteLine("======== HttpClient extension methods =========");
- await HttpClientExtensionMethods.Program.Main();
+ await HttpClientExtensionMethods.Program.Run();
Console.WriteLine();
Console.WriteLine("======== Custom converter handle null =========");
- CustomConverterHandleNull.Program.Main();
+ CustomConverterHandleNull.Program.Run();
Console.WriteLine();
Console.WriteLine("======== Custom converter inferred types to object =========");
- CustomConverterInferredTypesToObject.Program.Main();
+ CustomConverterInferredTypesToObject.Program.Run();
Console.WriteLine();
Console.WriteLine("======== Ignore value type default on serialize =========");
- IgnoreValueDefaultOnSerialize.Program.Main();
+ IgnoreValueDefaultOnSerialize.Program.Run();
Console.WriteLine();
Console.WriteLine("======== Ignore null on serialize =========");
- IgnoreNullOnSerialize.Program.Main();
+ IgnoreNullOnSerialize.Program.Run();
Console.WriteLine();
Console.WriteLine("======== Conditionally ignore selected properties on serialize =========");
- JsonIgnoreAttributeExample.Program.Main();
+ JsonIgnoreAttributeExample.Program.Run();
Console.WriteLine();
Console.WriteLine("======== Non-public accessors =========");
- NonPublicAccessors.Program.Main();
+ NonPublicAccessors.Program.Run();
Console.WriteLine();
Console.WriteLine("======== Copy options instance =========");
- CopyOptions.Program.Main();
+ CopyOptions.Program.Run();
Console.WriteLine();
Console.WriteLine("======== Create options instance with specified defaults =========");
- OptionsDefaults.Program.Main();
+ OptionsDefaults.Program.Run();
Console.WriteLine();
Console.WriteLine("======== Quoted numbers =========");
- QuotedNumbers.Program.Main();
+ QuotedNumbers.Program.Run();
Console.WriteLine();
Console.WriteLine("======== GuidReferenceResolver =========");
- GuidReferenceResolverExample.Program.Main();
+ GuidReferenceResolverExample.Program.Run();
Console.WriteLine();
}
}
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/QuotedNumbers.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/QuotedNumbers.cs
index 0c7a90b31fe45..1c83bb3c05020 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/QuotedNumbers.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/QuotedNumbers.cs
@@ -12,7 +12,7 @@ public class Forecast
public class Program
{
- public static void Main()
+ public static void Run()
{
Forecast forecast = new()
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/Records.cs b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/Records.cs
index eb38cdf5b8b39..06797906d96d7 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/Records.cs
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/Records.cs
@@ -9,7 +9,7 @@ public record Forecast(DateTime Date, int TemperatureC)
public class Program
{
- public static void Main()
+ public static void Run()
{
Forecast forecast = new(DateTime.Now, 40)
{
diff --git a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/SystemTextJsonHowTo.csproj b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/SystemTextJsonHowTo.csproj
index cd08d4e634e32..71d1233f72217 100644
--- a/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/SystemTextJsonHowTo.csproj
+++ b/docs/standard/serialization/system-text-json/snippets/how-to-contd/csharp/SystemTextJsonHowTo.csproj
@@ -8,4 +8,8 @@
enable
+
+
+
+