diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md index 65b9943a852e9..1f4bf9964e3d5 100644 --- a/docs/azure/includes/dotnet-all.md +++ b/docs/azure/includes/dotnet-all.md @@ -109,7 +109,7 @@ | 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/) | | Synapse - Monitoring | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.Analytics.Synapse.Monitoring/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/Analytics.Synapse.Monitoring-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Synapse.Monitoring_1.0.0-beta.3/sdk/synapse/Azure.Analytics.Synapse.Monitoring/) | | Synapse - Spark | NuGet [1.0.0-preview.8](https://www.nuget.org/packages/Azure.Analytics.Synapse.Spark/1.0.0-preview.8) | [docs](/dotnet/api/overview/azure/Analytics.Synapse.Spark-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-preview.8](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Synapse.Spark_1.0.0-preview.8/sdk/synapse/Azure.Analytics.Synapse.Spark/) | -| System Events | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.Messaging.EventGrid.SystemEvents/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/Messaging.EventGrid.SystemEvents-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventGrid.SystemEvents_1.0.0-beta.5/sdk/eventgrid/Azure.Messaging.EventGrid.SystemEvents/) | +| System Events | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Messaging.EventGrid.SystemEvents/1.0.0) | [docs](/dotnet/api/overview/azure/Messaging.EventGrid.SystemEvents-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventGrid.SystemEvents_1.0.0/sdk/eventgrid/Azure.Messaging.EventGrid.SystemEvents/) | | System.ClientModel | NuGet [1.4.2](https://www.nuget.org/packages/System.ClientModel/1.4.2)
NuGet [1.5.0-beta.1](https://www.nuget.org/packages/System.ClientModel/1.5.0-beta.1) | [docs](/dotnet/api/overview/azure/System.ClientModel-readme) | GitHub [1.4.2](https://github.com/Azure/azure-sdk-for-net/tree/System.ClientModel_1.4.2/sdk/core/System.ClientModel/)
GitHub [1.5.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/System.ClientModel_1.5.0-beta.1/sdk/core/System.ClientModel/) | | Tables | NuGet [12.11.0](https://www.nuget.org/packages/Azure.Data.Tables/12.11.0) | [docs](/dotnet/api/overview/azure/Data.Tables-readme) | GitHub [12.11.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Data.Tables_12.11.0/sdk/tables/Azure.Data.Tables/) | | Text Analytics | NuGet [5.3.0](https://www.nuget.org/packages/Azure.AI.TextAnalytics/5.3.0) | [docs](/dotnet/api/overview/azure/AI.TextAnalytics-readme) | GitHub [5.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.TextAnalytics_5.3.0/sdk/textanalytics/Azure.AI.TextAnalytics/) | @@ -353,7 +353,7 @@ | Resource Management - Self Help | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.SelfHelp/1.0.0)
NuGet [1.1.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.SelfHelp/1.1.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.SelfHelp-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SelfHelp_1.0.0/sdk/selfhelp/Azure.ResourceManager.SelfHelp/)
GitHub [1.1.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SelfHelp_1.1.0-beta.5/sdk/selfhelp/Azure.ResourceManager.SelfHelp/) | | Resource Management - Service Bus | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.ServiceBus/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.ServiceBus-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceBus_1.1.0/sdk/servicebus/Azure.ResourceManager.ServiceBus/) | | Resource Management - Service Fabric | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.ServiceFabric/1.1.0)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.ServiceFabric/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.ServiceFabric-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceFabric_1.1.0/sdk/servicefabric/Azure.ResourceManager.ServiceFabric/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceFabric_1.2.0-beta.2/sdk/servicefabric/Azure.ResourceManager.ServiceFabric/) | -| Resource Management - Service Fabric Managed Clusters | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.ServiceFabricManagedClusters/1.2.0)
NuGet [1.3.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.ServiceFabricManagedClusters/1.3.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.ServiceFabricManagedClusters-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceFabricManagedClusters_1.2.0/sdk/servicefabricmanagedclusters/Azure.ResourceManager.ServiceFabricManagedClusters/)
GitHub [1.3.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceFabricManagedClusters_1.3.0-beta.2/sdk/servicefabricmanagedclusters/Azure.ResourceManager.ServiceFabricManagedClusters/) | +| Resource Management - Service Fabric Managed Clusters | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.ServiceFabricManagedClusters/1.2.0)
NuGet [1.3.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.ServiceFabricManagedClusters/1.3.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.ServiceFabricManagedClusters-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceFabricManagedClusters_1.2.0/sdk/servicefabricmanagedclusters/Azure.ResourceManager.ServiceFabricManagedClusters/)
GitHub [1.3.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceFabricManagedClusters_1.3.0-beta.3/sdk/servicefabricmanagedclusters/Azure.ResourceManager.ServiceFabricManagedClusters/) | | Resource Management - Service Linker | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ServiceLinker/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ServiceLinker-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceLinker_1.1.1/sdk/servicelinker/Azure.ResourceManager.ServiceLinker/) | | Resource Management - Service Networking | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.ServiceNetworking/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.ServiceNetworking-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceNetworking_1.1.0/sdk/servicenetworking/Azure.ResourceManager.ServiceNetworking/) | | Resource Management - SignalR | NuGet [1.1.3](https://www.nuget.org/packages/Azure.ResourceManager.SignalR/1.1.3) | [docs](/dotnet/api/overview/azure/ResourceManager.SignalR-readme) | GitHub [1.1.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SignalR_1.1.3/sdk/signalr/Azure.ResourceManager.SignalR/) | diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md index 71d06ba4616fc..1c98774d79cc7 100644 --- a/docs/azure/includes/dotnet-new.md +++ b/docs/azure/includes/dotnet-new.md @@ -113,7 +113,7 @@ | 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/) | | Synapse - Monitoring | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.Analytics.Synapse.Monitoring/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/Analytics.Synapse.Monitoring-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Synapse.Monitoring_1.0.0-beta.3/sdk/synapse/Azure.Analytics.Synapse.Monitoring/) | | Synapse - Spark | NuGet [1.0.0-preview.8](https://www.nuget.org/packages/Azure.Analytics.Synapse.Spark/1.0.0-preview.8) | [docs](/dotnet/api/overview/azure/Analytics.Synapse.Spark-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-preview.8](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Synapse.Spark_1.0.0-preview.8/sdk/synapse/Azure.Analytics.Synapse.Spark/) | -| System Events | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.Messaging.EventGrid.SystemEvents/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/Messaging.EventGrid.SystemEvents-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventGrid.SystemEvents_1.0.0-beta.5/sdk/eventgrid/Azure.Messaging.EventGrid.SystemEvents/) | +| System Events | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Messaging.EventGrid.SystemEvents/1.0.0) | [docs](/dotnet/api/overview/azure/Messaging.EventGrid.SystemEvents-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.EventGrid.SystemEvents_1.0.0/sdk/eventgrid/Azure.Messaging.EventGrid.SystemEvents/) | | System.ClientModel | NuGet [1.4.2](https://www.nuget.org/packages/System.ClientModel/1.4.2)
NuGet [1.5.0-beta.1](https://www.nuget.org/packages/System.ClientModel/1.5.0-beta.1) | [docs](/dotnet/api/overview/azure/System.ClientModel-readme) | GitHub [1.4.2](https://github.com/Azure/azure-sdk-for-net/tree/System.ClientModel_1.4.2/sdk/core/System.ClientModel/)
GitHub [1.5.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/System.ClientModel_1.5.0-beta.1/sdk/core/System.ClientModel/) | | Tables | NuGet [12.11.0](https://www.nuget.org/packages/Azure.Data.Tables/12.11.0) | [docs](/dotnet/api/overview/azure/Data.Tables-readme) | GitHub [12.11.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Data.Tables_12.11.0/sdk/tables/Azure.Data.Tables/) | | Text Analytics | NuGet [5.3.0](https://www.nuget.org/packages/Azure.AI.TextAnalytics/5.3.0) | [docs](/dotnet/api/overview/azure/AI.TextAnalytics-readme) | GitHub [5.3.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.TextAnalytics_5.3.0/sdk/textanalytics/Azure.AI.TextAnalytics/) | @@ -363,7 +363,7 @@ | Resource Management - Self Help | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.SelfHelp/1.0.0)
NuGet [1.1.0-beta.5](https://www.nuget.org/packages/Azure.ResourceManager.SelfHelp/1.1.0-beta.5) | [docs](/dotnet/api/overview/azure/ResourceManager.SelfHelp-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SelfHelp_1.0.0/sdk/selfhelp/Azure.ResourceManager.SelfHelp/)
GitHub [1.1.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SelfHelp_1.1.0-beta.5/sdk/selfhelp/Azure.ResourceManager.SelfHelp/) | | Resource Management - Service Bus | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.ServiceBus/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.ServiceBus-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceBus_1.1.0/sdk/servicebus/Azure.ResourceManager.ServiceBus/) | | Resource Management - Service Fabric | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.ServiceFabric/1.1.0)
NuGet [1.2.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.ServiceFabric/1.2.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.ServiceFabric-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceFabric_1.1.0/sdk/servicefabric/Azure.ResourceManager.ServiceFabric/)
GitHub [1.2.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceFabric_1.2.0-beta.2/sdk/servicefabric/Azure.ResourceManager.ServiceFabric/) | -| Resource Management - Service Fabric Managed Clusters | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.ServiceFabricManagedClusters/1.2.0)
NuGet [1.3.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.ServiceFabricManagedClusters/1.3.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.ServiceFabricManagedClusters-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceFabricManagedClusters_1.2.0/sdk/servicefabricmanagedclusters/Azure.ResourceManager.ServiceFabricManagedClusters/)
GitHub [1.3.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceFabricManagedClusters_1.3.0-beta.2/sdk/servicefabricmanagedclusters/Azure.ResourceManager.ServiceFabricManagedClusters/) | +| Resource Management - Service Fabric Managed Clusters | NuGet [1.2.0](https://www.nuget.org/packages/Azure.ResourceManager.ServiceFabricManagedClusters/1.2.0)
NuGet [1.3.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.ServiceFabricManagedClusters/1.3.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.ServiceFabricManagedClusters-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceFabricManagedClusters_1.2.0/sdk/servicefabricmanagedclusters/Azure.ResourceManager.ServiceFabricManagedClusters/)
GitHub [1.3.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceFabricManagedClusters_1.3.0-beta.3/sdk/servicefabricmanagedclusters/Azure.ResourceManager.ServiceFabricManagedClusters/) | | Resource Management - Service Linker | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ServiceLinker/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ServiceLinker-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceLinker_1.1.1/sdk/servicelinker/Azure.ResourceManager.ServiceLinker/) | | Resource Management - Service Networking | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.ServiceNetworking/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.ServiceNetworking-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ServiceNetworking_1.1.0/sdk/servicenetworking/Azure.ResourceManager.ServiceNetworking/) | | Resource Management - SignalR | NuGet [1.1.3](https://www.nuget.org/packages/Azure.ResourceManager.SignalR/1.1.3) | [docs](/dotnet/api/overview/azure/ResourceManager.SignalR-readme) | GitHub [1.1.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SignalR_1.1.3/sdk/signalr/Azure.ResourceManager.SignalR/) | diff --git a/docs/core/compatibility/10.0.md b/docs/core/compatibility/10.0.md index 5586be97f2b1e..c9835b2f792e6 100644 --- a/docs/core/compatibility/10.0.md +++ b/docs/core/compatibility/10.0.md @@ -60,6 +60,7 @@ If you're migrating an app to .NET 10, the breaking changes listed here might af | Title | Type of change | Introduced version | |-------|-------------------|--------------------| +| [Single-file apps no longer look for native libraries in executable directory](interop/10.0/native-library-search.md) | Behavioral change | Preview 6 | | [Specifying DllImportSearchPath.AssemblyDirectory only searches the assembly directory](interop/10.0/search-assembly-directory.md) | Behavioral change | Preview 5 | ## Networking @@ -81,6 +82,7 @@ If you're migrating an app to .NET 10, the breaking changes listed here might af | [NU1510 is raised for direct references pruned by NuGet](sdk/10.0/nu1510-pruned-references.md) | Source incompatible | Preview 1 | | [PackageReference without a version raises an error](sdk/10.0/nu1015-packagereference-version.md) | Behavioral change | Preview 6 | | [HTTP warnings promoted to errors in `dotnet package list` and `dotnet package search`](sdk/10.0/http-warnings-to-errors.md) | Behavioral/source incompatible change | Preview 4 | +| [NUGET_ENABLE_ENHANCED_HTTP_RETRY environment variable removed](sdk/10.0/nuget-enhanced-http-retry-removed.md) | Behavioral change | Preview 6 | ## Windows Forms diff --git a/docs/core/compatibility/cryptography/10.0/x509-publickey-null.md b/docs/core/compatibility/cryptography/10.0/x509-publickey-null.md index 6dec01cbf55f6..45fbfc0d3cf73 100644 --- a/docs/core/compatibility/cryptography/10.0/x509-publickey-null.md +++ b/docs/core/compatibility/cryptography/10.0/x509-publickey-null.md @@ -1,6 +1,6 @@ --- title: "Breaking change - X509Certificate and PublicKey key parameters can be null" -description: "Learn about the breaking change in .NET 10 Preview 3 where key parameters in X509Certificate and PublicKey can be null." +description: "Learn about the breaking change in .NET 10 where key parameters in X509Certificate and PublicKey can be null." ms.date: 3/13/2025 ai-usage: ai-assisted ms.custom: https://github.com/dotnet/docs/issues/45325 diff --git a/docs/core/compatibility/interop/10.0/native-library-search.md b/docs/core/compatibility/interop/10.0/native-library-search.md new file mode 100644 index 0000000000000..012ce97ee8864 --- /dev/null +++ b/docs/core/compatibility/interop/10.0/native-library-search.md @@ -0,0 +1,75 @@ +--- +title: "Breaking change - Single-file apps no longer look for native libraries in executable directory" +description: "Learn about the breaking change in .NET 10 where single-file apps no longer look for native libraries in the executable directory." +ms.date: 06/25/2025 +ms.custom: https://github.com/dotnet/docs/issues/46356 +--- + +# Single-file apps no longer look for native libraries in executable directory + +Previously, in [single-file .NET applications](../../../deploying/single-file/overview.md), the directory of the single-file executable was added to the `NATIVE_DLL_SEARCH_DIRECTORIES` property during startup. Consequently, .NET always [probed](../../../dependency-loading/default-probing.md#unmanaged-native-library-probing) the application directory when unmanaged libraries were loaded. On non-Windows with [NativeAOT](../../../deploying/native-aot/index.md), the `rpath` was set to the application directory by default, such that it also always looked for native libraries in the application directory. + +The application directory is no longer added to `NATIVE_DLL_SEARCH_DIRECTORIES` in single-file apps, and the `rpath` setting has been removed in NativeAOT. In both cases, (included in the default behaviour for P/Invokes) means the application directory. If you specify that value or leave the default, .NET looks in the application directory. If you specify flags without that value, .NET no longer looks in the application directory. + +## Version introduced + +.NET 10 Preview 6 + +## Previous behavior + +Previously, single-file applications always looked in the application directory when loading native libraries. On non-Windows operating systems, NativeAOT applications always looked in the application directory when loading native libraries. + +For example, the following P/Invoke looked *in the application directory* for `lib` and loaded it from there if it existed: + +```csharp +[DllImport("lib") +[DefaultDllImportSearchPaths(DllImportSearchPath.System32)] +static extern void Method() +``` + +## New behavior + +Starting in .NET 10, single-file applications only look in the application directory if the search paths for a native library load indicate including the assembly directory. + +```csharp +// Look in System32 on Windows. +// Search the OS on non-Windows. +[DllImport("lib") +[DefaultDllImportSearchPaths(DllImportSearchPath.System32)] +static extern void Method() + +// Look next to the single-file app because assembly directory +// means application directory for single-file apps. +[DllImport("lib") +[DefaultDllImportSearchPaths(DllImportSearchPath.AssemblyDirectory)] +static extern void Method() + +// Look next to the single-file app (because assembly +// directory is searched by default), then default OS search. +[DllImport("lib") +static extern void Method() +``` + +## Type of breaking change + +This is a [behavioral change](../../categories.md#behavioral-change). + +## Reason for change + +The existing behavior (always look in the application directory even if search paths exclude it) has caused confusion. It's also inconsistent with how the search flags are handled in regular (non-single-file, non-NativeAOT) .NET applications. + +## Recommended action + +If the application/assembly directory is desired for a P/Invoke or native library load and wasn't previously specified, specify . + +If the `RPATH` setting is desired in NativeAOT, explicitly add the corresponding [linker arguments](../../../deploying/native-aot/interop.md#linking) to your project. + +## Affected APIs + +- P/Invokes +- +- + +## See also + +- [Specifying DllImportSearchPath.AssemblyDirectory only searches the assembly directory](search-assembly-directory.md) diff --git a/docs/core/compatibility/interop/10.0/search-assembly-directory.md b/docs/core/compatibility/interop/10.0/search-assembly-directory.md index 27b50dbba4779..ab6a92192c018 100644 --- a/docs/core/compatibility/interop/10.0/search-assembly-directory.md +++ b/docs/core/compatibility/interop/10.0/search-assembly-directory.md @@ -1,6 +1,6 @@ --- title: "Breaking change - Specifying DllImportSearchPath.AssemblyDirectory only searches the assembly directory" -description: "Learn about the breaking change in .NET 10 Preview 5 where specifying DllImportSearchPath.AssemblyDirectory as the only search flag restricts the search to the assembly directory." +description: "Learn about the breaking change in .NET 10 where specifying DllImportSearchPath.AssemblyDirectory as the only search flag restricts the search to the assembly directory." ms.date: 5/9/2025 ai-usage: ai-assisted ms.custom: https://github.com/dotnet/docs/issues/45911 @@ -18,20 +18,18 @@ Starting in .NET 10, if you specify was specified as the only search flag, the runtime searched the assembly directory first. If the library was not found, it fell back to the operating system's default library search behavior. -Example: +For example, with the following code, the runtime would search the assembly directory and then fall back to the OS search paths. ```csharp [DllImport("example.dll", DllImportSearchPath = DllImportSearchPath.AssemblyDirectory)] public static extern void ExampleMethod(); ``` -In this case, the runtime would search the assembly directory and then fall back to the OS search paths. - ## New behavior -When is specified as the only search flag, the runtime searches only in the assembly directory. It does not fall back to the operating system's default library search behavior. +When is specified as the only search flag, the runtime searches only in the assembly directory. It *doesn't* fall back to the operating system's default library search behavior. -The previous code example would now only search the assembly directory for *example.dll*. If the library is not found there, a will be thrown. +The previous code example now only searches the assembly directory for *example.dll*. If the library is not found there, a is thrown. ## Type of breaking change @@ -57,3 +55,7 @@ public static extern void ExampleMethod(); - P/Invokes using - - + +## See also + +- [Single-file apps no longer look for native libraries in executable directory](native-library-search.md) diff --git a/docs/core/compatibility/networking/10.0/default-http-streaming.md b/docs/core/compatibility/networking/10.0/default-http-streaming.md index 535beb81c5c5b..4661eee91bc8c 100644 --- a/docs/core/compatibility/networking/10.0/default-http-streaming.md +++ b/docs/core/compatibility/networking/10.0/default-http-streaming.md @@ -1,6 +1,6 @@ --- title: "Breaking change - Streaming HTTP responses enabled by default in browser HTTP clients" -description: "Learn about the breaking change in .NET 10 Preview 3 where streaming HTTP responses are enabled by default in browser HTTP clients." +description: "Learn about the breaking change in .NET 10 where streaming HTTP responses are enabled by default in browser HTTP clients." ms.date: 4/7/2025 ai-usage: ai-assisted ms.custom: https://github.com/dotnet/docs/issues/45644 diff --git a/docs/core/compatibility/sdk/10.0/default-workload-config.md b/docs/core/compatibility/sdk/10.0/default-workload-config.md index c4f80231d736b..2d112145d6e14 100644 --- a/docs/core/compatibility/sdk/10.0/default-workload-config.md +++ b/docs/core/compatibility/sdk/10.0/default-workload-config.md @@ -1,6 +1,6 @@ --- title: "Breaking change - Change default workload configuration from 'loose manifests' to 'workload sets' mode" -description: "Learn about the breaking change in .NET 10 Preview 2 where the default workload update mode changed." +description: "Learn about the breaking change in .NET 10 where the default workload update mode changed." ms.date: 3/12/2025 ai-usage: ai-assisted ms.custom: https://github.com/dotnet/docs/issues/45000 diff --git a/docs/core/compatibility/sdk/10.0/dotnet-cli-interactive.md b/docs/core/compatibility/sdk/10.0/dotnet-cli-interactive.md index c30ac95f61027..c90bb8b6962aa 100644 --- a/docs/core/compatibility/sdk/10.0/dotnet-cli-interactive.md +++ b/docs/core/compatibility/sdk/10.0/dotnet-cli-interactive.md @@ -1,6 +1,6 @@ --- title: "Breaking change - .NET CLI `--interactive` defaults to `true` in user scenarios" -description: "Learn about the breaking change in .NET 10 Preview 3 where the --interactive flag defaults to true in user-centric scenarios." +description: "Learn about the breaking change in .NET 10 where the --interactive flag defaults to true in user-centric scenarios." ms.date: 4/3/2025 ai-usage: ai-assisted ms.custom: https://github.com/dotnet/docs/issues/45548 diff --git a/docs/core/compatibility/sdk/10.0/http-warnings-to-errors.md b/docs/core/compatibility/sdk/10.0/http-warnings-to-errors.md index 2878a7d0042d1..680cc917beedf 100644 --- a/docs/core/compatibility/sdk/10.0/http-warnings-to-errors.md +++ b/docs/core/compatibility/sdk/10.0/http-warnings-to-errors.md @@ -1,6 +1,6 @@ --- title: "Breaking change - HTTP warnings promoted to errors in dotnet package list and dotnet package search" -description: "Learn about the breaking change in .NET 10 Preview 4 where HTTP warnings are promoted to errors in dotnet package operations." +description: "Learn about the breaking change in .NET 10 where HTTP warnings are promoted to errors in dotnet package operations." ms.date: 5/9/2025 ai-usage: ai-assisted ms.custom: https://github.com/dotnet/docs/issues/45985 diff --git a/docs/core/compatibility/sdk/10.0/nuget-enhanced-http-retry-removed.md b/docs/core/compatibility/sdk/10.0/nuget-enhanced-http-retry-removed.md new file mode 100644 index 0000000000000..452f90a00b9c2 --- /dev/null +++ b/docs/core/compatibility/sdk/10.0/nuget-enhanced-http-retry-removed.md @@ -0,0 +1,38 @@ +--- +title: "Breaking change: NUGET_ENABLE_ENHANCED_HTTP_RETRY environment variable removed" +description: "Learn about the breaking change in .NET 10 where NUGET_ENABLE_ENHANCED_HTTP_RETRY environment variable no longer disables exponential retry." +ms.date: 06/24/2025 +ai-usage: ai-assisted +ms.custom: https://github.com/dotnet/docs/issues/46537 +--- +# NUGET_ENABLE_ENHANCED_HTTP_RETRY environment variable removed + +The `NUGET_ENABLE_ENHANCED_HTTP_RETRY` environment variable no longer has any effect in .NET 10. Previously, this environment variable could be used to disable exponential retry back-off for failed HTTP calls in NuGet operations. + +## Version introduced + +.NET 10 Preview 6 + +## Previous behavior + +When the `NUGET_ENABLE_ENHANCED_HTTP_RETRY` environment variable was set to `false`, NuGet used the old retry behavior with a fixed 200ms delay between failed HTTP calls instead of exponential back-off. + +## New behavior + +The `NUGET_ENABLE_ENHANCED_HTTP_RETRY` environment variable has no effect. NuGet always uses exponential retry back-off for failed HTTP calls, which has been the default behavior since .NET SDK 6.0.300. + +## Type of breaking change + +This is a [behavioral change](../../categories.md#behavioral-change). + +## Reason for change + +Exponential retry back-off has been the default behavior for nearly 4 years since .NET SDK 6.0.300. The feature was introduced to help when restores overwhelmed servers that couldn't handle all package requests, and exponential retry allowed these requests to succeed. Since there has been no feedback indicating issues with this approach, the fallback option has outlived its utility. + +## Recommended action + +No action is required. + +## Affected APIs + +None. diff --git a/docs/core/compatibility/toc.yml b/docs/core/compatibility/toc.yml index 94ba8201f7ba1..1bfcadb77bae3 100644 --- a/docs/core/compatibility/toc.yml +++ b/docs/core/compatibility/toc.yml @@ -54,6 +54,8 @@ items: href: globalization/10.0/version-override.md - name: Interop items: + - name: Single-file apps no longer look for native libraries in executable directory + href: interop/10.0/native-library-search.md - name: Specifying DllImportSearchPath.AssemblyDirectory only searches the assembly directory href: interop/10.0/search-assembly-directory.md - name: Networking @@ -80,6 +82,8 @@ items: href: sdk/10.0/nu1015-packagereference-version.md - name: HTTP warnings promoted to errors in package list and search href: sdk/10.0/http-warnings-to-errors.md + - name: NUGET_ENABLE_ENHANCED_HTTP_RETRY environment variable removed + href: sdk/10.0/nuget-enhanced-http-retry-removed.md - name: Windows Forms items: - name: API obsoletions diff --git a/docs/core/compatibility/windows-forms/10.0/menuitem-contextmenu.md b/docs/core/compatibility/windows-forms/10.0/menuitem-contextmenu.md index 55f5989660024..f281914be35ef 100644 --- a/docs/core/compatibility/windows-forms/10.0/menuitem-contextmenu.md +++ b/docs/core/compatibility/windows-forms/10.0/menuitem-contextmenu.md @@ -1,6 +1,6 @@ --- title: "Breaking change - Applications referencing both WPF and WinForms must disambiguate MenuItem and ContextMenu types" -description: "Learn about the breaking change in .NET 10 Preview 1 where applications referencing both WPF and WinForms must disambiguate MenuItem and ContextMenu types." +description: "Learn about the breaking change in .NET 10 where applications referencing both WPF and WinForms must disambiguate MenuItem and ContextMenu types." ms.date: 3/11/2025 ai-usage: ai-assisted ms.custom: https://github.com/dotnet/docs/issues/44738 diff --git a/docs/core/compatibility/wpf/10.0/dynamicresource-crash.md b/docs/core/compatibility/wpf/10.0/dynamicresource-crash.md index 8b63bec5cecf3..fa7f53e45077e 100644 --- a/docs/core/compatibility/wpf/10.0/dynamicresource-crash.md +++ b/docs/core/compatibility/wpf/10.0/dynamicresource-crash.md @@ -1,6 +1,6 @@ --- title: "Breaking change - Incorrect usage of DynamicResource causes application crash" -description: "Learn about the breaking change in .NET 10 Preview 4 where incorrect usage of DynamicResource now causes application crashes." +description: "Learn about the breaking change in .NET 10 where incorrect usage of DynamicResource now causes application crashes." ms.date: 5/12/2025 ai-usage: ai-assisted ms.custom: https://github.com/dotnet/docs/issues/46089 diff --git a/docs/csharp/how-to/concatenate-multiple-strings.md b/docs/csharp/how-to/concatenate-multiple-strings.md index dfc7c51c5358b..a9d2e1d9a5c40 100644 --- a/docs/csharp/how-to/concatenate-multiple-strings.md +++ b/docs/csharp/how-to/concatenate-multiple-strings.md @@ -15,7 +15,7 @@ ms.custom: copilot-scenario-highlight [!INCLUDE[interactive-note](~/includes/csharp-interactive-note.md)] > [!TIP] -> You can use AI assistance to [concatenate strings with GitHub Copilot](#use-github-copilot-to-concatenate-strings). +> You can use AI assistance to [concatenate strings](#use-ai-to-concatenate-strings). ## String literals @@ -70,9 +70,9 @@ combines an array of words, adding a space between each word in the array: This option can cause more allocations than other methods for concatenating collections, as it creates an intermediate string for each iteration. If optimizing performance is critical, consider the [`StringBuilder`](#stringbuilder) class or the [`String.Concat` or `String.Join`](#stringconcat-or-stringjoin) method to concatenate a collection, instead of `Enumerable.Aggregate`. -## Use GitHub Copilot to concatenate strings +## Use AI to concatenate strings -You can use GitHub Copilot in your IDE to generate C# code to concatenate multiple strings. You can customize the prompt to specify strings and the method to use per your requirements. +You can use AI tools, such as GitHub Copilot, to generate C# code to concatenate multiple strings. You can customize the prompt to specify strings and the method to use per your requirements. The following text shows an example prompt for Copilot Chat: @@ -82,10 +82,10 @@ Generate C# code to use String.Format to build an output string "Hi x, today's d GitHub Copilot is powered by AI, so surprises and mistakes are possible. For more information, see [Copilot FAQs](https://aka.ms/copilot-general-use-faqs). -Learn more about [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) and [GitHub Copilot in VS Code](https://code.visualstudio.com/docs/copilot/overview). - ## See also - - - [Strings](../programming-guide/strings/index.md) +- [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) +- [GitHub Copilot in VS Code](https://code.visualstudio.com/docs/copilot/overview) diff --git a/docs/csharp/how-to/parse-strings-using-split.md b/docs/csharp/how-to/parse-strings-using-split.md index 07adb90003e07..72c31840f87d6 100644 --- a/docs/csharp/how-to/parse-strings-using-split.md +++ b/docs/csharp/how-to/parse-strings-using-split.md @@ -16,7 +16,7 @@ The method creates an [!INCLUDE[interactive-note](~/includes/csharp-interactive-note.md)] > [!TIP] -> You can use AI assistance to [split a string with GitHub Copilot](#use-github-copilot-to-split-a-string). +> You can use AI assistance to [split a string](#use-ai-to-split-a-string). ## Split a string into words @@ -76,9 +76,9 @@ The following example shows the effect of trimming entries: The untrimmed entries have extra whitespace before the numerals. -## Use GitHub Copilot to split a string +## Use AI to split a string -You can use GitHub Copilot in your IDE to generate code to split strings using `String.Split` in C#. You can customize the prompt to use strings and delimiters per your requirements. +You can use AI tools, such as GitHub Copilot, to generate code to split strings using `String.Split` in C#. You can customize the prompt to use strings and delimiters per your requirements. The following text shows an example prompt for Copilot Chat: @@ -90,10 +90,10 @@ Provide example output. GitHub Copilot is powered by AI, so surprises and mistakes are possible. For more information, see [Copilot FAQs](https://aka.ms/copilot-general-use-faqs). -Learn more about [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) and [GitHub Copilot in VS Code](https://code.visualstudio.com/docs/copilot/overview). - ## See also - [Extract elements from a string](../../standard/base-types/divide-up-strings.md) - [Strings](../programming-guide/strings/index.md) - [.NET regular expressions](../../standard/base-types/regular-expressions.md) +- [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) +- [GitHub Copilot in VS Code](https://code.visualstudio.com/docs/copilot/overview) diff --git a/docs/csharp/programming-guide/classes-and-structs/how-to-initialize-a-dictionary-with-a-collection-initializer.md b/docs/csharp/programming-guide/classes-and-structs/how-to-initialize-a-dictionary-with-a-collection-initializer.md index 4d3f1d471cccd..5ea9e525947d6 100644 --- a/docs/csharp/programming-guide/classes-and-structs/how-to-initialize-a-dictionary-with-a-collection-initializer.md +++ b/docs/csharp/programming-guide/classes-and-structs/how-to-initialize-a-dictionary-with-a-collection-initializer.md @@ -24,7 +24,7 @@ A contains a collection of key/ > while the second part of example, the public read / write indexer method, quietly overwrites the already existing entry with the same key. > [!TIP] -> You can use AI assistance to [initialize a dictionary with GitHub Copilot](#use-github-copilot-to-initialize-a-dictionary). +> You can use AI assistance to [initialize a dictionary](#use-ai-to-initialize-a-dictionary). ## Example @@ -34,9 +34,9 @@ In the following code example, a . Finally, the whole collection initializer for the dictionary is enclosed in braces. In the second initialization, the left side of the assignment is the key and the right side is the value, using an object initializer for `StudentName`. -## Use GitHub Copilot to initialize a dictionary +## Use AI to initialize a dictionary -You can use GitHub Copilot in your IDE to generate C# code to initialize a dictionary with a collection initializer. You can customize the prompt to add specifics per your requirements. +You can use AI tools, such as GitHub Copilot, to generate C# code to initialize a dictionary with a collection initializer. You can customize the prompt to add specifics per your requirements. The following text shows an example prompt for Copilot Chat: @@ -46,8 +46,8 @@ Generate C# code to initialize Dictionary using key-value pairs w GitHub Copilot is powered by AI, so surprises and mistakes are possible. For more information, see [Copilot FAQs](https://aka.ms/copilot-general-use-faqs). -Learn more about [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) and [GitHub Copilot in VS Code](https://code.visualstudio.com/docs/copilot/overview). - ## See also - [Object and Collection Initializers](./object-and-collection-initializers.md) +- [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) +- [GitHub Copilot in VS Code](https://code.visualstudio.com/docs/copilot/overview) diff --git a/docs/csharp/programming-guide/types/how-to-convert-a-string-to-a-number.md b/docs/csharp/programming-guide/types/how-to-convert-a-string-to-a-number.md index 336b05c76e705..c577fcffee668 100644 --- a/docs/csharp/programming-guide/types/how-to-convert-a-string-to-a-number.md +++ b/docs/csharp/programming-guide/types/how-to-convert-a-string-to-a-number.md @@ -21,7 +21,7 @@ It's slightly more efficient and straightforward to call a `TryParse` method (fo You use `Parse` or `TryParse` methods on the numeric type you expect the string contains, such as the type. The method uses internally. The `Parse` method returns the converted number; the `TryParse` method returns a boolean value that indicates whether the conversion succeeded, and returns the converted number in an `out` parameter. If the string isn't in a valid format, `Parse` throws an exception, but `TryParse` returns `false`. When calling a `Parse` method, you should always use exception handling to catch a when the parse operation fails. > [!TIP] -> You can use AI assistance to [convert a string to a number with GitHub Copilot](#use-github-copilot-to-convert-a-string-to-a-number). +> You can use AI assistance to [convert a string to a number](#use-ai-to-convert-a-string-to-a-number). ## Call Parse or TryParse methods @@ -55,9 +55,9 @@ The following example calls the The [web default](configure-options.md#web-defaults-for-jsonserializeroptions) naming policy is camel case. > [!TIP] -> You can use AI assistance to [create an object with custom serialization properties with GitHub Copilot](#use-github-copilot-to-customize-how-property-names-are-serialized). +> You can use AI assistance to [create an object with custom serialization properties](#use-ai-to-customize-how-property-names-are-serialized). For other scenarios that require special handling of JSON property names and values, you can [implement custom converters](converters-how-to.md). @@ -243,9 +243,9 @@ By default, properties are serialized in the order in which they're defined in t :::code language="csharp" source="snippets/how-to-6-0/csharp/PropertyOrder.cs"::: -## Use GitHub Copilot to customize how property names are serialized +## Use AI to customize how property names are serialized -You can prompt GitHub Copilot to apply patterns of changes to how your code serializes. +You can use AI tools, such as GitHub Copilot, to apply patterns of changes to how your code serializes. Suppose your class declaration has properties that follow `PascalCasing`, and the JSON standard for your project is `snake_casing`. You can use AI to add the necessary [[JsonPropertyName]](xref:System.Text.Json.Serialization.JsonPropertyNameAttribute) attributes to every property in your class. You can use Copilot to make these changes with a chat prompt like this: @@ -275,9 +275,9 @@ Use built-in serialization attributes. GitHub Copilot is powered by AI, so surprises and mistakes are possible. For more information, see [Copilot FAQs](https://aka.ms/copilot-general-use-faqs). -Learn more about [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) and [GitHub Copilot in VS Code](https://code.visualstudio.com/docs/copilot/overview). - ## See also - [System.Text.Json overview](overview.md) - [How to serialize and deserialize JSON](how-to.md) +- [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) +- [GitHub Copilot in VS Code](https://code.visualstudio.com/docs/copilot/overview) diff --git a/docs/standard/serialization/system-text-json/deserialization.md b/docs/standard/serialization/system-text-json/deserialization.md index 509084126dd13..20dd8146495a2 100644 --- a/docs/standard/serialization/system-text-json/deserialization.md +++ b/docs/standard/serialization/system-text-json/deserialization.md @@ -22,7 +22,7 @@ This article shows how to use the method. For the generic overloads, the generic type parameter is the .NET class. For the non-generic overloads, you pass the type of the class as a method parameter. You can deserialize either synchronously or asynchronously. > [!TIP] -> You can use AI assistance to [deserialize a JSON string with GitHub Copilot](#use-github-copilot-to-deserialize-json). +> You can use AI assistance to [deserialize a JSON string](#use-ai-to-deserialize-json). Any JSON properties that aren't represented in your class are ignored [by default](missing-members.md). Also, if any properties on the type are [required](required-properties.md) but not present in the JSON payload, deserialization will fail. @@ -87,9 +87,9 @@ To deserialize from UTF-8, call a namespace to serialize to JavaScript Object Notation (JSON). If you're porting existing code from `Newtonsoft.Json`, see [How to migrate to `System.Text.Json`](migrate-from-newtonsoft.md). > [!TIP] -> You can use AI assistance to [serialize to JSON with GitHub Copilot](#use-github-copilot-to-serialize-to-json). +> You can use AI assistance to [serialize to JSON](#use-ai-to-serialize-to-json). To write JSON to a string or to a file, call the method. @@ -49,7 +49,7 @@ The preceding examples use type inference for the type being serialized. An over :::code language="csharp" source="snippets/how-to/csharp/SerializeWithGenericParameter.cs" highlight="23"::: :::code language="vb" source="snippets/how-to/vb/RoundtripToString.vb" id="SerializeWithGenericParameter"::: -You can also use GitHub Copilot to generate serialization code for you. For instructions, see the [Use GitHub Copilot](#use-github-copilot-to-serialize-to-json) section in this article. +You can also use AI to generate serialization code for you. For instructions, see the [Use AI](#use-ai-to-serialize-to-json) section in this article. ## Serialization behavior @@ -108,9 +108,9 @@ Starting in .NET 9, you can also customize the indent character and size using < > [!TIP] > If you use `JsonSerializerOptions` repeatedly with the same options, don't create a new `JsonSerializerOptions` instance each time you use it. Reuse the same instance for every call. For more information, see [Reuse JsonSerializerOptions instances](configure-options.md#reuse-jsonserializeroptions-instances). -## Use GitHub Copilot to serialize to JSON +## Use AI to serialize to JSON -You can use GitHub Copilot in your IDE to generate code that uses `System.Text.Json` to serialize to JSON. You can customize the prompt to use object fields that suit your requirements. +You can use AI tools, such as GitHub Copilot, to generate code that uses `System.Text.Json` to serialize to JSON. You can customize the prompt to use object fields that suit your requirements. The following text shows an example prompt for Copilot Chat: @@ -122,4 +122,7 @@ Provide example output. GitHub Copilot is powered by AI, so surprises and mistakes are possible. For more information, see [Copilot FAQs](https://aka.ms/copilot-general-use-faqs). -Learn more about [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) and [GitHub Copilot in VS Code](https://code.visualstudio.com/docs/copilot/overview). +## See also + +- [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) +- [GitHub Copilot in VS Code](https://code.visualstudio.com/docs/copilot/overview) 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 48c62c454d348..a7d6f98e2bfe9 100644 --- a/docs/standard/serialization/system-text-json/migrate-from-newtonsoft.md +++ b/docs/standard/serialization/system-text-json/migrate-from-newtonsoft.md @@ -24,7 +24,7 @@ The `System.Text.Json` namespace provides functionality for serializing to and d * .NET Core 2.0, 2.1, and 2.2 > [!TIP] -> You can use AI assistance to [migrate from `Newtonsoft.Json`](#use-github-copilot-to-migrate). +> You can use AI assistance to [migrate from `Newtonsoft.Json`](#use-ai-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. @@ -630,9 +630,9 @@ System.Text.Json sets limits that can't be changed for some values, such as the Newtonsoft parses `NaN`, `Infinity`, and `-Infinity` JSON string tokens. With System.Text.Json, use . For information about how to use this setting, see [Allow or write numbers in quotes](invalid-json.md#allow-or-write-numbers-in-quotes). -## Use GitHub Copilot to migrate +## Use AI to migrate -You can get coding help from GitHub Copilot to migrate your code from `Newtonsoft.Json` to `System.Text.Json` within your IDE. You can customize the prompt per your requirements. +You can use AI tools, such as GitHub Copilot, to migrate your code from `Newtonsoft.Json` to `System.Text.Json` within your IDE. You can customize the prompt per your requirements. **Example prompt for Copilot Chat** @@ -651,9 +651,9 @@ Console.WriteLine(output); GitHub Copilot is powered by AI, so surprises and mistakes are possible. For more information, see [Copilot FAQs](https://aka.ms/copilot-general-use-faqs). -Learn more about [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) and [GitHub Copilot in VS Code](https://code.visualstudio.com/docs/copilot/overview). - ## Additional resources * [System.Text.Json overview](overview.md) * [How to serialize and deserialize JSON](how-to.md) +* [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) +* [GitHub Copilot in VS Code](https://code.visualstudio.com/docs/copilot/overview)