Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
0cbabb8
Freshness updates for STJ source generation (#49888)
gewarren Nov 14, 2025
e32fa77
Revise wording in unit-testing-csharp-with-nunit.md (#49902)
krerkkiat Nov 14, 2025
dcbc445
Update code snippet reference for enumeration method (#49890)
BillWagner Nov 14, 2025
529a7e1
.NET 10 is available on Fedora 41 as well (#49897)
omajid Nov 14, 2025
9420965
.NET 10 is available on RHEL 8 too (#49894)
omajid Nov 14, 2025
9c723a1
Remove Orleans multi-clustering documentation (#49892)
Copilot Nov 14, 2025
7d1b518
Update .NET CLI command docs to reflect support for @ symbol (#49872)
meaghanlewis Nov 14, 2025
19d9a8a
Document EXTOBS obsolete diagnostics for extensions (#49870)
Copilot Nov 14, 2025
af02b5d
Update package index with latest published versions (#49893)
azure-sdk Nov 14, 2025
1580892
Document predefined compiler symbols in F# compiler directives (#49386)
Copilot Nov 14, 2025
30dfb47
Add breaking change documentation for DAMT.All replacement in System.…
Copilot Nov 14, 2025
667b56f
Update latest status of Linux (#49907)
adegeo Nov 14, 2025
ebb3d39
Remove misleading nominal types section from F# anonymous records doc…
Copilot Nov 14, 2025
70f240d
Add documentation for DOTNET_SKIP_WORKLOAD_INTEGRITY_CHECK environmen…
Copilot Nov 14, 2025
f2a5af2
Update package index with latest published versions (#49909)
azure-sdk Nov 14, 2025
97b6254
edit pass based on feedback (#49911)
BillWagner Nov 14, 2025
f77c22b
Update package index with latest published versions (#49912)
azure-sdk Nov 14, 2025
b3f2830
Add .NET 10+ native shell completion documentation (#49908)
Copilot Nov 15, 2025
e6dfff8
Update package index with latest published versions (#49913)
azure-sdk Nov 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .openpublishing.redirection.orleans.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,26 @@
{
"source_path_from_root": "/docs/orleans/implementation/cluster-configuration.md",
"redirect_url": "/dotnet/orleans/implementation/cluster-management"
},
{
"source_path_from_root": "/docs/orleans/deployment/multi-cluster-support/global-single-instance.md",
"redirect_url": "/dotnet/orleans/deployment/"
},
{
"source_path_from_root": "/docs/orleans/deployment/multi-cluster-support/gossip-channels.md",
"redirect_url": "/dotnet/orleans/deployment/"
},
{
"source_path_from_root": "/docs/orleans/deployment/multi-cluster-support/multi-cluster-configuration.md",
"redirect_url": "/dotnet/orleans/deployment/"
},
{
"source_path_from_root": "/docs/orleans/deployment/multi-cluster-support/overview.md",
"redirect_url": "/dotnet/orleans/deployment/"
},
{
"source_path_from_root": "/docs/orleans/deployment/multi-cluster-support/silo-configuration.md",
"redirect_url": "/dotnet/orleans/deployment/"
}

]
Expand Down
61 changes: 30 additions & 31 deletions docs/azure/includes/dotnet-all.md

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions docs/azure/includes/dotnet-new.md

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions docs/core/compatibility/10.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,12 @@ If you're migrating an app to .NET 10, the breaking changes listed here might af
| [Streaming HTTP responses enabled by default in browser HTTP clients](networking/10.0/default-http-streaming.md) | Behavioral change |
| [`Uri` length limits removed](networking/10.0/uri-length-limits-removed.md) | Behavioral change |

## Reflection

| Title | Type of change | Introduced version |
|-------|-------------------|--------------------|
| [More restricted annotations on InvokeMember/FindMembers/DeclaredMembers](reflection/10/ireflect-damt-annotations.md) | Behavioral/source incompatible | |

## SDK and MSBuild

| Title | Type of change |
Expand Down
64 changes: 64 additions & 0 deletions docs/core/compatibility/reflection/10/ireflect-damt-annotations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
title: "Breaking change: More restricted annotations on InvokeMember/FindMembers/DeclaredMembers"
description: "Learn about the breaking change in .NET 10 where System.Reflection APIs InvokeMember, FindMembers, and DeclaredMembers use more restricted annotations instead of DynamicallyAccessedMemberTypes.All."
ms.date: 10/09/2025
ai-usage: ai-generated
---

# More restricted annotations on InvokeMember/FindMembers/DeclaredMembers

Starting in .NET 10, the <xref:System.Reflection> APIs <xref:System.Reflection.IReflect.InvokeMember%2A>, <xref:System.Type.FindMembers%2A>, and <xref:System.Reflection.TypeInfo.DeclaredMembers> use more restricted annotations instead of <xref:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All?displayProperty=nameWithType>.

This change affects scenarios where developers implement the <xref:System.Reflection.IReflect> interface or derive from <xref:System.Reflection.TypeInfo>. The previous use of <xref:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All?displayProperty=nameWithType> was overly permissive and could lead to unintended behavior, such as capturing interface methods implemented by a class or generating warnings due to unsafe reflection calls.

## Version introduced

.NET 10

## Previous behavior

Previously, the [affected APIs](#affected-apis) used the <xref:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All?displayProperty=nameWithType> annotation, which was overly permissive. This could result in capturing additional members, such as interface methods implemented by a class, and potentially cause runtime warnings or unsafe reflection calls.

## New behavior

The [affected APIs](#affected-apis) now use more restricted annotations, which provide better control over the members captured during reflection.

## Type of breaking change

This change is a [behavioral change](../../categories.md#behavioral-change) and can affect [source compatibility](../../categories.md#source-compatibility).

## Reason for change

The change was introduced to improve the accuracy of annotations in <xref:System.Reflection> APIs and to address issues caused by the overly permissive <xref:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All?displayProperty=nameWithType> annotation. This ensures better compatibility with trimming and reflection scenarios, reduces run-time warnings, and prevents unsafe reflection calls.

## Recommended action

If you implement <xref:System.Reflection.IReflect> or derive from <xref:System.Reflection.TypeInfo>, review your code and update annotations to align with the new behavior. Specifically:

1. Replace <xref:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All?displayProperty=nameWithType> annotations with more restricted annotations, such as <xref:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods?displayProperty=nameWithType>, <xref:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods?displayProperty=nameWithType>, or other appropriate types.

The following code snippet shows an example.

```csharp
class MyType : IReflect
{
[DynamicallyAccessedMembers(
DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields |
DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods |
DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties |
DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)]
public object InvokeMember(string name, BindingFlags invokeAttr, Binder? binder, object? target,
object?[]? args, ParameterModifier[]? modifiers, CultureInfo? culture, string[]? namedParameters)
{ }
}
```

1. Test reflection scenarios to ensure that the updated annotations capture the intended members and don't introduce run-time errors or warnings.

For more information on `DynamicallyAccessedMembers` annotations and their usage, see [Prepare .NET libraries for trimming](../../../deploying/trimming/prepare-libraries-for-trimming.md).

## Affected APIs

- <xref:System.Reflection.IReflect.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[])?displayProperty=fullName>
- <xref:System.Type.FindMembers(System.Reflection.MemberTypes,System.Reflection.BindingFlags,System.Reflection.MemberFilter,System.Object)?displayProperty=fullName>
- <xref:System.Reflection.TypeInfo.DeclaredMembers?displayProperty=fullName>
2 changes: 2 additions & 0 deletions docs/core/compatibility/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,8 @@ items:
href: networking/10.0/uri-length-limits-removed.md
- name: Reflection
items:
- name: More restricted annotations on InvokeMember/FindMembers/DeclaredMembers
href: reflection/10/ireflect-damt-annotations.md
- name: Type.MakeGenericSignatureType argument validation
href: reflection/10/makegeneric-signaturetype-validation.md
- name: SDK and MSBuild
Expand Down
14 changes: 5 additions & 9 deletions docs/core/install/linux-debian.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ ms.custom: linux-related-content

# Install the .NET SDK or the .NET Runtime on Debian

This article describes how to install .NET on Debian. When a Debian version falls out of support, .NET is no longer supported with that version. However, these instructions may help you to get .NET running on those versions, even though it isn't supported.
This article describes how to install .NET on Debian. When a Debian version falls out of support, .NET is no longer supported with that version. However, these instructions might help you to get .NET running on those versions, even though it isn't supported.

[!INCLUDE [linux-intro-sdk-vs-runtime](includes/linux-intro-sdk-vs-runtime.md)]

Expand Down Expand Up @@ -42,8 +42,6 @@ sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
```

[!INCLUDE [linux-release-wait](includes/linux-release-wait.md)]

# [.NET 10](#tab/dotnet10)

[!INCLUDE [linux-install-package-manager-x64-arm64](includes/linux-install-package-manager-x64-arm64.md)]
Expand Down Expand Up @@ -76,8 +74,6 @@ rm packages-microsoft-prod.deb

# [.NET 10](#tab/dotnet10)

[!INCLUDE [linux-release-wait](includes/linux-release-wait.md)]

[!INCLUDE [linux-install-package-manager-x64-arm64](includes/linux-install-package-manager-x64-arm64.md)]

[!INCLUDE [linux-apt-install-100](includes/linux-install-100-apt.md)]
Expand All @@ -98,18 +94,18 @@ rm packages-microsoft-prod.deb

## Use APT to update .NET

When a new patch release is available for .NET, you can simply upgrade it through APT with the following commands:
When a new patch release is available for .NET, you can upgrade it through APT with the following commands:

```bash
sudo apt-get update
sudo apt-get upgrade
```

If you've upgraded your Linux distribution since installing .NET, you may need to reconfigure the Microsoft package repository. Run the installation instructions for your current distribution version to upgrade to the appropriate package repository for .NET updates.
If you upgraded your Linux distribution since installing .NET, you might need to reconfigure the Microsoft package repository. Run the installation instructions for your current distribution version to upgrade to the appropriate package repository for .NET updates.

## Troubleshooting

This section provides information on common errors you may get while using APT to install .NET.
This section provides information on common errors you might get while using APT to install .NET.

### Unable to find package

Expand All @@ -123,7 +119,7 @@ If you're using Debian 12 or later, try the following commands:

[!INCLUDE [package-manager-failed-to-find-deb-new](includes/package-manager-failed-to-find-deb-new.md)]

If you're using a Debian version prior to 12, try the following commands:
If you're using a Debian version older than 12, try the following commands:

[!INCLUDE [package-manager-failed-to-find-deb-classic](includes/package-manager-failed-to-find-deb-classic.md)]

Expand Down
2 changes: 1 addition & 1 deletion docs/core/install/linux-fedora.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ The following table is a list of currently supported .NET releases and the versi
|--------|----------|
| 43 | 10, 9, 8 |
| 42 | 10, 9, 8 |
| 41 | 9, 8 |
| 41 | 10, 9, 8 |

[!INCLUDE [versions-not-supported](includes/versions-not-supported.md)]

Expand Down
8 changes: 5 additions & 3 deletions docs/core/install/linux-opensuse.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Install .NET on openSUSE Leap
description: Learn about which versions of .NET SDK and .NET Runtime are supported, and how to install .NET on openSUSE Leap.
author: adegeo
ms.author: adegeo
ms.date: 11/07/2025
ms.date: 11/14/2025
ms.custom: linux-related-content
---

Expand Down Expand Up @@ -46,20 +46,22 @@ sudo chown root:root /etc/zypp/repos.d/microsoft-prod.repo

# [.NET 10](#tab/dotnet10)

[!INCLUDE [linux-release-wait](includes/linux-release-wait.md)]

[!INCLUDE [linux-install-package-manager-x64-arm64](includes/linux-install-package-manager-x64-arm64.md)]

[!INCLUDE [linux-zyp-install-100](includes/linux-install-100-zyp.md)]

# [.NET 9](#tab/dotnet9)

openSUSE Leap 16 is newly supported with .NET. The packages for .NET 9 aren't published yet.

[!INCLUDE [linux-install-package-manager-x64-only](includes/linux-install-package-manager-x64-only.md)]

[!INCLUDE [linux-zyp-install-90](includes/linux-install-90-zyp.md)]

# [.NET 8](#tab/dotnet8)

openSUSE Leap 16 is newly supported with .NET. The packages for .NET 8 aren't published yet.

[!INCLUDE [linux-install-package-manager-x64-only](includes/linux-install-package-manager-x64-only.md)]

[!INCLUDE [linux-zyp-install-80](includes/linux-install-80-zyp.md)]
Expand Down
10 changes: 4 additions & 6 deletions docs/core/install/linux-rhel.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Install .NET on RHEL and CentOS Stream
description: Learn about which versions of .NET are supported, and how to install .NET on Red Hat Enterprise Linux and CentOS Stream.
author: adegeo
ms.author: adegeo
ms.date: 11/07/2025
ms.date: 11/14/2025
ms.custom: linux-related-content
---

Expand All @@ -15,7 +15,7 @@ ms.custom: linux-related-content

## Register your Red Hat subscription

To install .NET from Red Hat on RHEL, you first need to register using the Red Hat Subscription Manager. If this hasn't been done on your system, or if you're unsure, see the [Red Hat Product Documentation for .NET](https://access.redhat.com/documentation/en-us/net/8.0).
To install .NET from Red Hat on RHEL, you first need to register using the Red Hat Subscription Manager. If this hasn't been done on your system, or if you're unsure, see the [Red Hat Product Documentation for .NET](https://access.redhat.com/documentation/en-us/net/10.0).

> [!IMPORTANT]
> The previous statement doesn't apply to CentOS Stream.
Expand All @@ -28,7 +28,7 @@ The following table is a list of currently supported .NET releases on both RHEL
|---------------------------------------|----------|
| [RHEL 10](#rhel-10) | 10, 9, 8 |
| [RHEL 9](#rhel-9) | 10, 9, 8 |
| [RHEL 8](#rhel-8) | 9, 8 |
| [RHEL 8](#rhel-8) | 10, 9, 8 |
| [CentOS Stream 10](#centos-stream-10) | 10, 9, 8 |
| [CentOS Stream 9](#centos-stream-9) | 10, 9, 8 |

Expand All @@ -44,8 +44,6 @@ The following table is a list of currently supported .NET releases on both RHEL

## RHEL 10

[!INCLUDE [linux-release-wait](includes/linux-release-wait.md)]

.NET is included in the [AppStream repositories](https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle) for RHEL 10.

[!INCLUDE [linux-dnf-install-100](includes/linux-install-100-dnf.md)]
Expand All @@ -60,7 +58,7 @@ The following table is a list of currently supported .NET releases on both RHEL

.NET is included in the [AppStream repositories](https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle) for RHEL 8.

[!INCLUDE [linux-dnf-install-90](includes/linux-install-90-dnf.md)]
[!INCLUDE [linux-dnf-install-100](includes/linux-install-100-dnf.md)]

## CentOS Stream 10

Expand Down
16 changes: 9 additions & 7 deletions docs/core/install/linux-sles.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Install .NET on SUSE Enterprise Linux
description: Learn about which versions of .NET SDK and .NET Runtime are supported, and how to install .NET on SUSE Enterprise Linux (SLES).
author: adegeo
ms.author: adegeo
ms.date: 11/07/2025
ms.date: 11/14/2025
ms.custom: linux-related-content
---

Expand Down Expand Up @@ -43,20 +43,22 @@ sudo rpm -Uvh https://packages.microsoft.com/config/sles/16/packages-microsoft-p

# [.NET 10](#tab/dotnet10)

[!INCLUDE [linux-release-wait](includes/linux-release-wait.md)]

[!INCLUDE [linux-install-package-manager-x64-arm64](includes/linux-install-package-manager-x64-arm64.md)]

[!INCLUDE [linux-zyp-install-100](includes/linux-install-100-zyp.md)]

# [.NET 9](#tab/dotnet9)

SUSE Enterprise Linux 16 is newly supported with .NET. The packages for .NET 9 aren't published yet.

[!INCLUDE [linux-install-package-manager-x64-only](includes/linux-install-package-manager-x64-only.md)]

[!INCLUDE [linux-zyp-install-90](includes/linux-install-90-zyp.md)]

# [.NET 8](#tab/dotnet8)

SUSE Enterprise Linux 16 is newly supported with .NET. The packages for .NET 8 aren't published yet.

[!INCLUDE [linux-install-package-manager-x64-only](includes/linux-install-package-manager-x64-only.md)]

[!INCLUDE [linux-zyp-install-80](includes/linux-install-80-zyp.md)]
Expand All @@ -71,7 +73,7 @@ sudo rpm -Uvh https://packages.microsoft.com/config/sles/16/packages-microsoft-p
sudo rpm -Uvh https://packages.microsoft.com/config/sles/15/packages-microsoft-prod.rpm
```

Currently, the SLES 15 Microsoft repository setup package installs the *microsoft-prod.repo* file to the wrong directory, preventing zypper from finding the .NET packages. To fix this problem, create a symlink in the correct directory.
Currently, the SLES 15 Microsoft repository setup package installs the `microsoft-prod.repo` file to the wrong directory, preventing zypper from finding the .NET packages. To fix this problem, create a symlink in the correct directory.

```bash
sudo ln -s /etc/yum.repos.d/microsoft-prod.repo /etc/zypp/repos.d/microsoft-prod.repo
Expand Down Expand Up @@ -103,7 +105,7 @@ sudo ln -s /etc/yum.repos.d/microsoft-prod.repo /etc/zypp/repos.d/microsoft-prod

## Troubleshoot the package manager

This section provides information on common errors you may get while using the package manager to install .NET.
This section provides information on common errors you might get while using the package manager to install .NET.

### Unable to find package

Expand All @@ -115,13 +117,13 @@ This section provides information on common errors you may get while using the p

## Dependencies

When you install with a package manager, these libraries are installed for you. But, if you manually install .NET or you publish a self-contained app, you'll need to make sure these libraries are installed:
When you install with a package manager, these libraries are installed for you. But, if you manually install .NET or you publish a self-contained app, you must make sure these libraries are installed:

- krb5
- libicu
- libopenssl1_1

If the target runtime environment's OpenSSL version is 1.1 or newer, you'll need to install `compat-openssl10`.
If the target runtime environment's OpenSSL version is 1.1 or newer, install the `compat-openssl10` package.

Dependencies can be installed with the `zypper install` command. The following snippet demonstrates installing the `krb5` library:

Expand Down
23 changes: 12 additions & 11 deletions docs/core/install/linux-snap-runtime.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,18 @@ The following steps install the .NET 9 runtime snap package:

Each .NET Runtime is published as an individual snap package. The following table lists the packages:

| .NET version | Snap package | .NET version supported by Microsoft |
|---------------------------------------------------|---------------------|-----|
| [9 (STS)](https://snapcraft.io/dotnet-runtime-90) | `dotnet-runtime-90` | Yes |
| [8 (LTS)](https://snapcraft.io/dotnet-runtime-80) | `dotnet-runtime-80` | Yes |
| [7 (STS)](https://snapcraft.io/dotnet-runtime-70) | `dotnet-runtime-70` | No |
| [6 (LTS)](https://snapcraft.io/dotnet-runtime-60) | `dotnet-runtime-60` | No |
| [5](https://snapcraft.io/dotnet-runtime-50) | `dotnet-runtime-50` | No |
| [3.1](https://snapcraft.io/dotnet-runtime-31) | `dotnet-runtime-31` | No |
| [3.0](https://snapcraft.io/dotnet-runtime-30) | `dotnet-runtime-30` | No |
| [2.2](https://snapcraft.io/dotnet-runtime-22) | `dotnet-runtime-22` | No |
| [2.1](https://snapcraft.io/dotnet-runtime-21) | `dotnet-runtime-21` | No |
| .NET version | Snap package | .NET version supported by Microsoft |
|-----------------------------------------------------|----------------------|-------------------------------------|
| [10 (LTS)](https://snapcraft.io/dotnet-runtime-100) | `dotnet-runtime-100` | Yes |
| [9 (STS)](https://snapcraft.io/dotnet-runtime-90) | `dotnet-runtime-90` | Yes |
| [8 (LTS)](https://snapcraft.io/dotnet-runtime-80) | `dotnet-runtime-80` | Yes |
| [7 (STS)](https://snapcraft.io/dotnet-runtime-70) | `dotnet-runtime-70` | No |
| [6 (LTS)](https://snapcraft.io/dotnet-runtime-60) | `dotnet-runtime-60` | No |
| [5](https://snapcraft.io/dotnet-runtime-50) | `dotnet-runtime-50` | No |
| [3.1](https://snapcraft.io/dotnet-runtime-31) | `dotnet-runtime-31` | No |
| [3.0](https://snapcraft.io/dotnet-runtime-30) | `dotnet-runtime-30` | No |
| [2.2](https://snapcraft.io/dotnet-runtime-22) | `dotnet-runtime-22` | No |
| [2.1](https://snapcraft.io/dotnet-runtime-21) | `dotnet-runtime-21` | No |

## 2. Enable the dotnet command

Expand Down
Loading
Loading