Skip to content

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.

Comment on lines +1 to +6
---
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
---
Copy link

Copilot AI Feb 4, 2026

Choose a reason for hiding this comment

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

The SDK breaking-change articles in docs/core/compatibility/sdk/* consistently include an ms.custom frontmatter entry linking to the tracking GitHub issue. This new article is missing that metadata, which makes it harder to trace back to the source issue (for example, see docs/core/compatibility/sdk/10.0/dotnet-watch-stderr.md:6 and docs/core/compatibility/sdk/9.0/default-rid.md:6). Add an ms.custom value (for example, the issue linked in the PR description) to match the established pattern.

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +2
---
title: "Breaking change: mono launch target not set for .NET Framework apps"
Copy link

Copilot AI Feb 4, 2026

Choose a reason for hiding this comment

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

The PR description references the new article path as docs/core/compatibility/sdk/11.0/mono-launch-target-removed.md, but the file added (and linked from TOC/index) is docs/core/compatibility/sdk/11/mono-launch-target-removed.md. Update the PR description so it matches the actual location.

Copilot uses AI. Check for mistakes.

## Reason for change

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

Copilot AI Feb 4, 2026

Choose a reason for hiding this comment

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

Avoid time-relative wording like "last year" in docs because it becomes incorrect over time. Rephrase this sentence to be time-agnostic (for example, refer to the Mono ownership transition without specifying relative timing, or include a specific month/year if needed).

Suggested change
This change was made because running .NET Framework applications on Linux using Mono is no longer officially supported. Mono ownership was transitioned last year, and the .NET SDK should not automatically configure launch targets for unsupported scenarios.
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.

Copilot uses AI. Check for mistakes.
Comment on lines +41 to +44
## 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.

Copy link

Copilot AI Feb 4, 2026

Choose a reason for hiding this comment

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

The "Recommended action" section says to configure RunCommand and RunArguments, but it doesn't include the actual .csproj example. Add the minimal XML snippet users need (and consider mentioning that they might want to scope it with a condition so it only applies on Linux and/or only for .NET Framework targets).

Copilot uses AI. Check for mistakes.
Comment on lines +21 to +22
<RunCommand Condition="'$(RunCommand)' == ''">mono</RunCommand>
<RunArguments Condition="'$(RunArguments)' == ''">&quot;$(TargetPath)&quot; $(StartArguments)</RunArguments>
Copy link

Copilot AI Feb 4, 2026

Choose a reason for hiding this comment

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

In the XML snippet, the trailing spaces and the &quot; entities reduce readability in a Markdown code block. Remove the trailing whitespace and use normal double quotes around $(TargetPath) since escaping isn't needed inside a fenced code block.

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

Copilot uses AI. Check for mistakes.
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

2 participants