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
//