Skip to content

Document breaking change: SDK no longer sets mono launch target for .NET Framework apps#51453

Merged
gewarren merged 5 commits intomainfrom
copilot/remove-mono-launch-target
Feb 4, 2026
Merged

Document breaking change: SDK no longer sets mono launch target for .NET Framework apps#51453
gewarren merged 5 commits intomainfrom
copilot/remove-mono-launch-target

Conversation

Copy link
Contributor

Copilot AI commented Feb 3, 2026

Overview

The .NET SDK previously auto-configured RunCommand and RunArguments to launch .NET Framework apps with mono on Linux. This behavior was removed in .NET 11 Preview 1 following mono ownership transition.

Changes

  • Created breaking change article: docs/core/compatibility/sdk/11.0/mono-launch-target-removed.md

    • Documents removal of automatic mono configuration
    • Provides manual workaround for users who need this behavior
  • Updated navigation:

    • Added entry to SDK section in docs/core/compatibility/toc.yml
    • Added entry to docs/core/compatibility/11.md index

Migration

Users requiring this behavior can manually configure their .csproj:

<PropertyGroup>
  <RunCommand>mono</RunCommand>
  <RunArguments>"$(TargetPath)" $(StartArguments)</RunArguments>
</PropertyGroup>

However, migration to modern .NET is the recommended path forward.

Original prompt

This section details on the original issue you should resolve

<issue_title>[Breaking change]: .NET SDK no longer setting mono launch target for .NET framework applications</issue_title>
<issue_description>### Description

When running dotnet run on a .NET Framework application on Linux, the .NET SDK would previously set the RunCommand as mono. We transitioned ownership of mono last year and should not automatically set the launch target for .NET Framework applications on Linux.

Version

.NET 11 Preview 1

Previous behavior

dotnet/sdk#52091

Previously we would set the RunCommand and RunArguments

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

New behavior

This code has been deleted.

Type of breaking change

  • Binary incompatible: Existing binaries might encounter a breaking change in behavior, such as failure to load or execute, and if so, require recompilation.
  • Source incompatible: When recompiled using the new SDK or component or to target the new runtime, existing source code might require source changes to compile successfully.
  • Behavioral change: Existing binaries might behave differently at run time.

Reason for change

This is not supported.

Recommended action

Customers who want this behavior can set the RunCommand and RunArguments properties themselves in their .csproj file

Feature area

SDK

Affected APIs

No response</issue_description>

Comments on the Issue (you are @copilot in this section)

@marcpopMSFT CC @baronfel

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.


Internal previews

📄 File 🔗 Preview link
docs/core/compatibility/11.md Breaking changes in .NET 11
docs/core/compatibility/sdk/11/mono-launch-target-removed.md mono launch target not set for .NET Framework apps
docs/core/compatibility/toc.yml docs/core/compatibility/toc

- Document .NET SDK no longer automatically setting mono as launch target
- Add article to SDK section in .NET 11 breaking changes
- Update TOC and index files
Copilot AI changed the title [WIP] Remove automatic setting of mono launch target for .NET Framework apps Document breaking change: SDK no longer sets mono launch target for .NET Framework apps Feb 3, 2026
Copilot AI requested a review from gewarren February 3, 2026 21:32
@gewarren gewarren requested a review from marcpopMSFT February 4, 2026 00:25
@gewarren gewarren marked this pull request as ready for review February 4, 2026 00:26
@gewarren gewarren requested a review from a team as a code owner February 4, 2026 00:26
Copilot AI review requested due to automatic review settings February 4, 2026 00:26
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Documents a .NET 11 SDK breaking change where dotnet run on Linux no longer auto-configures mono for .NET Framework apps, and wires the new article into the compatibility navigation.

Changes:

  • Added a new .NET 11 SDK breaking change article describing the removed auto-configuration behavior.
  • Updated the compatibility TOC to include the new SDK/MSBuild entry under .NET 11.
  • Updated the .NET 11 breaking changes index page to list the new SDK/MSBuild breaking change.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

File Description
docs/core/compatibility/toc.yml Adds the new .NET 11 “SDK and MSBuild” node and links to the breaking change article.
docs/core/compatibility/sdk/11/mono-launch-target-removed.md Introduces the breaking change article content for the removed mono launch target behavior.
docs/core/compatibility/11.md Adds an “SDK and MSBuild” section and links the new breaking change article.

@gewarren gewarren requested a review from meaghanlewis February 4, 2026 22:10
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@gewarren gewarren enabled auto-merge (squash) February 4, 2026 22:55
@gewarren gewarren merged commit 7b0158c into main Feb 4, 2026
11 checks passed
@gewarren gewarren deleted the copilot/remove-mono-launch-target branch February 4, 2026 22:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Breaking change]: .NET SDK no longer setting mono launch target for .NET framework applications

3 participants