From f0dc234dd70ccc5a7806500f37eef2e67da11d38 Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Mon, 14 Apr 2025 07:31:05 -0700 Subject: [PATCH 1/5] Update package index with latest published versions (#45800) --- docs/azure/includes/dotnet-all.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md index 9e5f6a78ffee8..085839dc3425a 100644 --- a/docs/azure/includes/dotnet-all.md +++ b/docs/azure/includes/dotnet-all.md @@ -414,7 +414,7 @@ | Common | NuGet [2.2.1](https://www.nuget.org/packages/Microsoft.Azure.Common/2.2.1) | | | | Common - Dependencies | NuGet [1.0.0](https://www.nuget.org/packages/Microsoft.Azure.Common.Dependencies/1.0.0) | | | | Computer Vision | NuGet [7.0.1](https://www.nuget.org/packages/Microsoft.Azure.CognitiveServices.Vision.ComputerVision/7.0.1) | | GitHub [7.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.CognitiveServices.Vision.ComputerVision_6.0.0-preview.1/sdk/cognitiveservices/Vision.ComputerVision) | -| Cosmos DB | NuGet [3.47.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.47.0)
NuGet [3.49.0-preview.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.49.0-preview.0) | [docs](/dotnet/api/overview/azure/cosmosdb) | GitHub [3.47.0](https://github.com/Azure/azure-cosmos-dotnet-v3/tree/3.12.0/Microsoft.Azure.Cosmos) | +| Cosmos DB | NuGet [3.47.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.47.0)
NuGet [3.49.0-preview.1](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.49.0-preview.1) | [docs](/dotnet/api/overview/azure/cosmosdb) | GitHub [3.47.0](https://github.com/Azure/azure-cosmos-dotnet-v3/tree/3.12.0/Microsoft.Azure.Cosmos) | | Custom Image Search | NuGet [2.1.0-preview.1](https://www.nuget.org/packages/Microsoft.Azure.CognitiveServices.Search.BingCustomImageSearch/2.1.0-preview.1) | | GitHub [2.1.0-preview.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.CognitiveServices.Search.BingCustomImageSearch_2.1.0-preview.1/sdk/cognitiveservices/Search.BingCustomImageSearch) | | Custom Image Search | NuGet [2.0.0](https://www.nuget.org/packages/Microsoft.Azure.CognitiveServices.Search.CustomImageSearch/2.0.0) | | | | Custom Search | NuGet [2.1.0-preview.1](https://www.nuget.org/packages/Microsoft.Azure.CognitiveServices.Search.BingCustomSearch/2.1.0-preview.1) | | GitHub [2.1.0-preview.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.CognitiveServices.Search.BingCustomSearch_2.1.0-preview.1/sdk/cognitiveservices/Search.BingCustomSearch) | From c7a052c0b76cca78e633679d48b7f3aaddc4242e Mon Sep 17 00:00:00 2001 From: Youssef Victor Date: Mon, 14 Apr 2025 19:07:26 +0200 Subject: [PATCH 2/5] Update what's new in .NET 10 for SDK (#45796) Thank you, @Youssef1313! --- docs/core/whats-new/dotnet-10/overview.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/core/whats-new/dotnet-10/overview.md b/docs/core/whats-new/dotnet-10/overview.md index 702067de1d63d..a0108678bd5a3 100644 --- a/docs/core/whats-new/dotnet-10/overview.md +++ b/docs/core/whats-new/dotnet-10/overview.md @@ -53,6 +53,11 @@ The .NET 10 SDK introduces the following new features and enhancements, includin - **Pruning of framework-provided package references**: Automatically removes unused framework-provided package references, reducing build times and disk usage. - **More consistent command order**: New noun-first aliases for `dotnet` CLI commands improve readability and consistency. +- **CLI commands default to interactive mode in interactive terminals**: The `--interactive` flag is now enabled by default for CLI commands in interactive terminals. +- **Native shell tab-completion scripts**: The `dotnet` CLI now supports generating native tab-completion scripts for popular shells using the `dotnet completions generate [SHELL]` command. Supported shells include `bash`, `fish`, `nushell`, `powershell`, and `zsh`. +- **Console apps can natively create container images**: Console apps can now create container images via `dotnet publish /t:PublishContainer` without requiring the `` property in the project file. +- **Explicitly control the image format of containers**: A new `` property allows you to explicitly set the format of container images to either `Docker` or `OCI`. +- **Support for Microsoft.Testing.Platform in `dotnet test`**: A new `dotnet test` experience made specifically for Microsoft.Testing.Platform can be opted-in via `dotnet.config`. For more information about the existing `dotnet test` integration for MTP and the new integration, see [Testing with `dotnet test`](../../testing/unit-testing-with-dotnet-test.md). For more information, see [What's new in the SDK for .NET 10](sdk.md). From c29a91a315504b785e0e370298dd3d788eb65a9c Mon Sep 17 00:00:00 2001 From: Cam Soper Date: Mon, 14 Apr 2025 12:09:21 -0500 Subject: [PATCH 3/5] [Breaking change]: .NET Linux applications do not look in `netcoredeps` sub-directory for native libraries (#45778) * [Breaking change]: .NET Linux applications do not look in `netcoredeps` sub-directory for native libraries Fixes #45777 * lint fix * Review feedback from @am11 * Review feedback from @jkotas * period * Apply suggestions from code review Co-authored-by: Aaron Robinson Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com> Co-authored-by: Jan Kotas * type of change * another fix * Apply suggestions from code review Co-authored-by: Jan Kotas * indent * fixed xrefs --------- Co-authored-by: Aaron Robinson Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com> Co-authored-by: Jan Kotas --- docs/core/compatibility/8.0.md | 17 ++++--- .../interop/8.0/linux-netcoredeps.md | 49 +++++++++++++++++++ docs/core/compatibility/toc.yml | 4 ++ 3 files changed, 62 insertions(+), 8 deletions(-) create mode 100644 docs/core/compatibility/interop/8.0/linux-netcoredeps.md diff --git a/docs/core/compatibility/8.0.md b/docs/core/compatibility/8.0.md index dd8f6625893e4..b475fba01d0bf 100644 --- a/docs/core/compatibility/8.0.md +++ b/docs/core/compatibility/8.0.md @@ -2,7 +2,7 @@ title: Breaking changes in .NET 8 titleSuffix: "" description: Navigate to the breaking changes in .NET 8. -ms.date: 12/05/2023 +ms.date: 04/10/2025 no-loc: [Blazor, Razor, Kestrel] --- # Breaking changes in .NET 8 @@ -102,13 +102,14 @@ If you're migrating an app to .NET 8, the breaking changes listed here might aff ## Interop -| Title | Type of change | -| ------------------------------------------------------------------------------------------------- | ------------------- | -| [CreateObjectFlags.Unwrap only unwraps on target instance](interop/8.0/comwrappers-unwrap.md) | Behavioral change | -| [Custom marshallers require additional members](interop/8.0/marshal-modes.md) | Source incompatible | -| [IDispatchImplAttribute API is removed](interop/8.0/idispatchimplattribute-removed.md) | Binary incompatible | -| [JSFunctionBinding implicit public default constructor removed](interop/8.0/jsfunctionbinding-constructor.md) | Binary incompatible | -| [SafeHandle types must have public constructor](interop/8.0/safehandle-constructor.md) | Source incompatible | +| Title | Type of change | +|---------------------------------------------------------------------------------------------------------------|---------------------| +| [CreateObjectFlags.Unwrap only unwraps on target instance](interop/8.0/comwrappers-unwrap.md) | Behavioral change | +| [Custom marshallers require additional members](interop/8.0/marshal-modes.md) | Source incompatible | +| [IDispatchImplAttribute API is removed](interop/8.0/idispatchimplattribute-removed.md) | Binary incompatible | +| [JSFunctionBinding implicit public default constructor removed](interop/8.0/jsfunctionbinding-constructor.md) | Binary incompatible | +| [SafeHandle types must have public constructor](interop/8.0/safehandle-constructor.md) | Source incompatible | +| [Linux native library resolution no longer uses `netcoredeps`](interop/8.0/linux-netcoredeps.md) | Behavioral change | ## Networking diff --git a/docs/core/compatibility/interop/8.0/linux-netcoredeps.md b/docs/core/compatibility/interop/8.0/linux-netcoredeps.md new file mode 100644 index 0000000000000..bbf0fa16e3eba --- /dev/null +++ b/docs/core/compatibility/interop/8.0/linux-netcoredeps.md @@ -0,0 +1,49 @@ +--- +title: "Breaking change - Linux native library resolution no longer uses `netcoredeps`" +description: "Learn about the breaking change in .NET 8 where Linux applications no longer search the `netcoredeps` subdirectory for native libraries." +ms.date: 4/10/2025 +ai-usage: ai-assisted +ms.custom: https://github.com/dotnet/docs/issues/45777 +--- + +# Linux native library resolution no longer uses `netcoredeps` + +Starting in .NET 8, Linux applications no longer search the `netcoredeps` subdirectory for native libraries. + +## Version introduced + +.NET 8 + +## Previous behavior + +In earlier versions of .NET, Linux applications searched for native libraries in a `netcoredeps` subdirectory located next to the application executable. This behavior applied to all native library loads, including user-defined platform invokes (p/invokes). + +## New behavior + +In .NET 8 and later, Linux applications no longer search the `netcoredeps` subdirectory for native libraries. Native library resolution now follows standard mechanisms without relying on this subdirectory. + +## Type of breaking change + +This is a [behavioral change](../../categories.md#behavioral-change). + +## Reason for change + +The `netcoredeps` behavior was originally introduced to handle complex dependencies on third-party libraries in earlier .NET versions. .NET 8+ no longer requires this behavior due to improved dependency handling. Additionally, the mechanism isn't aligned with recommended practices for ELF platforms. + +For more information, see [GitHub issue #114393](https://github.com/dotnet/runtime/issues/114393). + +## Recommended action + +If your application relied on the `netcoredeps` subdirectory for p/invokes or custom native library resolution, use the following alternatives: + +- Implement a custom resolution mechanism using one of the following: + - + - [System.Runtime.Loader.AssemblyLoadContext.LoadUnmanagedDll](/dotnet/api/system.runtime.loader.assemblyloadcontext.loadunmanageddll) + - + - +- If an `RPATH` is required in your deployment, modify the ELF file explicitly using the `patchelf` utility. + +## Affected APIs + +- `DllImport` +- diff --git a/docs/core/compatibility/toc.yml b/docs/core/compatibility/toc.yml index d8b6d06e914fa..74a1a6e83698c 100644 --- a/docs/core/compatibility/toc.yml +++ b/docs/core/compatibility/toc.yml @@ -362,6 +362,8 @@ items: href: interop/8.0/jsfunctionbinding-constructor.md - name: SafeHandle types must have public constructor href: interop/8.0/safehandle-constructor.md + - name: Linux native library resolution no longer uses `netcoredeps` + href: interop/8.0/linux-netcoredeps.md - name: Networking items: - name: SendFile throws NotSupportedException for connectionless sockets @@ -1818,6 +1820,8 @@ items: href: interop/8.0/jsfunctionbinding-constructor.md - name: SafeHandle types must have public constructor href: interop/8.0/safehandle-constructor.md + - name: Linux native library resolution no longer uses `netcoredeps` + href: interop/8.0/linux-netcoredeps.md - name: .NET 7 items: - name: RuntimeInformation.OSArchitecture under emulation From 43968666b55a37aca3859a2aaa2cd93696f2efa2 Mon Sep 17 00:00:00 2001 From: Tyler McCoy <144307884+tjmccoy@users.noreply.github.com> Date: Mon, 14 Apr 2025 13:36:37 -0500 Subject: [PATCH 4/5] Update csrefKeywordsModifiers.cs (#45803) Added '$' in two locations to enable string interpolation. --- .../csrefKeywordsModifiers/CS/csrefKeywordsModifiers.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/snippets/csharp/VS_Snippets_VBCSharp/csrefKeywordsModifiers/CS/csrefKeywordsModifiers.cs b/samples/snippets/csharp/VS_Snippets_VBCSharp/csrefKeywordsModifiers/CS/csrefKeywordsModifiers.cs index 8a87e3f819e6f..73ac9eac4848d 100644 --- a/samples/snippets/csharp/VS_Snippets_VBCSharp/csrefKeywordsModifiers/CS/csrefKeywordsModifiers.cs +++ b/samples/snippets/csharp/VS_Snippets_VBCSharp/csrefKeywordsModifiers/CS/csrefKeywordsModifiers.cs @@ -785,7 +785,7 @@ public abstract class Shape protected Shape(string color) { Color = color; - Console.WriteLine("Created a shape with color {color}."); + Console.WriteLine($"Created a shape with color {color}."); } // Abstract method that must be implemented by derived classes @@ -813,7 +813,7 @@ public class Program public static void Main(string[] args) { Square square = new Square("red", 5); - Console.WriteLine("Area of the square: {square.CalculateArea()}"); + Console.WriteLine($"Area of the square: {square.CalculateArea()}"); } } // From 2a216fbab50a4cafc2a87781c87c4710d3692ee4 Mon Sep 17 00:00:00 2001 From: "Andy (Steve) De George" <67293991+adegeo@users.noreply.github.com> Date: Mon, 14 Apr 2025 12:47:40 -0700 Subject: [PATCH 5/5] Fix bad string interpolations (#45807) * Fix bad string interpolations * Simplify the f specifier example --- .../conceptual.timespan.custom/cs/customexamples1.cs | 4 ++-- .../conceptual.timespan.custom/cs/fspecifiers1.cs | 10 +++++----- .../conceptual.timespan.custom/cs/negativevalues1.cs | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs b/samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs index 73f404d7e0ed3..310686965f8bd 100644 --- a/samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs +++ b/samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs @@ -64,8 +64,8 @@ private static void ddSpecifier() for (int ctr = 2; ctr <= 8; ctr++) { string fmt = new String('d', ctr) + @"\.hh\:mm\:ss"; - Console.WriteLine($"{fmt} --> {ts1:" + fmt + "}"); - Console.WriteLine($"{fmt} --> {ts2:" + fmt + "}"); + Console.WriteLine($"{fmt} --> {ts1.ToString(fmt)}"); + Console.WriteLine($"{fmt} --> {ts2.ToString(fmt)}"); Console.WriteLine(); } // The example displays the following output: diff --git a/samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/fspecifiers1.cs b/samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/fspecifiers1.cs index eb7dfaca4918d..f8f51ea0bb7f9 100644 --- a/samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/fspecifiers1.cs +++ b/samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/fspecifiers1.cs @@ -1,4 +1,4 @@ -using System; +using System; public class Example { @@ -11,15 +11,15 @@ public static void Main() Console.WriteLine(); for (int ctr = 1; ctr <= 7; ctr++) { - fmt = new String('f', ctr); + fmt = new string('f', ctr); if (fmt.Length == 1) fmt = "%" + fmt; - Console.WriteLine("{0,10}: {1:" + fmt + "}", fmt, ts); + Console.WriteLine($"{fmt,10}: {ts.ToString(fmt)}"); } Console.WriteLine(); for (int ctr = 1; ctr <= 7; ctr++) { - fmt = new String('f', ctr); - Console.WriteLine("{0,10}: {1:s\\." + fmt + "}", "s\\." + fmt, ts); + fmt = $"s\\.{new string('f', ctr)}"; + Console.WriteLine($"{fmt,10}: {ts.ToString(fmt)}"); } // The example displays the following output: // %f: 8 diff --git a/samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/negativevalues1.cs b/samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/negativevalues1.cs index 69e74ad5c5c3b..38eed378f2a7e 100644 --- a/samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/negativevalues1.cs +++ b/samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/negativevalues1.cs @@ -9,10 +9,10 @@ public static void Main() String fmt = (result < TimeSpan.Zero ? "\\-" : "") + "dd\\.hh\\:mm"; Console.WriteLine(result.ToString(fmt)); - Console.WriteLine($"Interval: {result:" + fmt + "}"); + Console.WriteLine($"Interval: {result.ToString(fmt)}"); } } // The example displays output like the following: -// -1291.10:54 -// Interval: -1291.10:54 +// -5582.12:21 +// Interval: -5582.12:21 //