Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 6 additions & 0 deletions docs/core/compatibility/11.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,9 @@ See [Breaking changes in EF Core 11](/ef/core/what-is-new/ef-core-11.0/breaking-
| Title | Type of change |
|-------------------------------------------------------------------|-------------------|
| [Minimum hardware requirements updated](jit/11/minimum-hardware-requirements.md) | Behavioral change |

## SDK and MSBuild

| Title | Type of change |
|-------------------------------------------------------------------|-------------------|
| [mono launch target not set for .NET Framework apps](sdk/11/mono-launch-target-removed.md) | Behavioral change |
47 changes: 47 additions & 0 deletions docs/core/compatibility/sdk/11/mono-launch-target-removed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
title: "Breaking change: mono launch target not set for .NET Framework apps"
description: "Learn about the breaking change in .NET 11 where the .NET SDK no longer automatically sets mono as the launch target for .NET Framework applications on Linux."
ms.date: 02/03/2026
ai-usage: ai-assisted
---

# mono launch target not set for .NET Framework apps

The .NET SDK no longer automatically sets `mono` as the launch target for .NET Framework applications on Linux when using `dotnet run`.

## Version introduced

.NET 11 Preview 1

## Previous behavior

Previously, when you called `dotnet run` on a .NET Framework application on Linux, the SDK automatically set the `RunCommand` and `RunArguments` properties in the project file to use Mono as the runtime:

```xml
<RunCommand Condition="'$(RunCommand)' == ''">mono</RunCommand>
<RunArguments Condition="'$(RunArguments)' == ''">&quot;$(TargetPath)&quot; $(StartArguments)</RunArguments>
```

This allowed .NET Framework applications to be launched directly using `dotnet run` without additional configuration.

## New behavior

Starting in .NET 11, the SDK no longer automatically configures these properties. Running `dotnet run` on a .NET Framework application on Linux fails unless the `RunCommand` and `RunArguments` properties are explicitly set in the project file.

## Type of breaking change

This change is a [behavioral change](../../categories.md#behavioral-change).

## Reason for change

This change was made because running .NET Framework applications on Linux using Mono is no longer officially supported. Mono ownership has transitioned, and the .NET SDK should not automatically configure launch targets for unsupported scenarios.

For more information, see [dotnet/sdk PR #52091](https://github.com/dotnet/sdk/pull/52091).

## Recommended action

If you need to continue running .NET Framework applications on Linux using Mono, you can manually configure the `RunCommand` and `RunArguments` properties in your project file.

## Affected APIs

None.
4 changes: 4 additions & 0 deletions docs/core/compatibility/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ items:
items:
- name: Minimum hardware requirements updated
href: jit/11/minimum-hardware-requirements.md
- name: SDK and MSBuild
items:
- name: mono launch target not set for .NET Framework apps
href: sdk/11/mono-launch-target-removed.md
- name: .NET 10
items:
- name: Overview
Expand Down