Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Dec 9, 2025

Plan to Remove Mono Support for .NET Framework Apps

  • Explore and understand the codebase
  • Identify all mono-related code for .NET Framework apps
  • Remove mono support from Microsoft.NET.Sdk.targets (lines 1440-1443)
  • Search for and remove any related tests
  • Build the SDK to verify changes
  • Run relevant tests to validate changes
  • Request code review
  • Run CodeQL security check
Original prompt

This section details on the original issue you should resolve

<issue_title>Consider: drop mono support for .NET Framework apps</issue_title>
<issue_description>

<PropertyGroup Condition="$([MSBuild]::IsOSUnixLike())">
<RunCommand Condition="'$(RunCommand)' == ''">mono</RunCommand>
<RunArguments Condition="'$(RunArguments)' == ''">&quot;$(TargetPath)&quot; $(StartArguments)</RunArguments>
</PropertyGroup>

Should we consider dropping this? cc @baronfel @jkotas

Today, running dotnet run on a console app that's .NET Framework on non-Windows will run it via mono. Is that scenario still supported or used by enough people?</issue_description>

<agent_instructions>Remove the lines of code for mono and look for any other code that references mono including any tests and remove them.</agent_instructions>

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

@jkotas It would make sense to me to start dropping support for unsupported scenarios like this one. It is not a good use of resources to carry this baggage around, and the support is likely broken in number of ways anyway.

The problem is that SDK does not have any depreciation policy currently - see discussion #51765 (comment) and so it is impossible to drop anything. I do not think that it is sustainable long-term. cc @marcpopMSFT </comment_new>
<comment_new>@ViktorHofer
Also see the discussion in microsoft/vstest#15340 (comment) for the (probably non-existent) impact on VSTest.</comment_new>
<comment_new>@marcpopMSFT
From telemetry, it's fewer than 300 run calls in the past 30 days that specify a netfx TFM and run on non-windows (out of ~1M calls that specify TFM so ~.05%). This wouldn't include distro customers or customers that have the TFM not specified on the CLI.

Seems like this is low enough that we can announce early in 11 and remove. We should detect and direct customers on instructions on how to get unblocked.</comment_new>


💡 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.

Co-authored-by: marcpopMSFT <12663534+marcpopMSFT@users.noreply.github.com>
@marcpopMSFT marcpopMSFT force-pushed the copilot/remove-mono-support branch from 26c7585 to fda76ab Compare December 12, 2025 23:41
@marcpopMSFT
Copy link
Member

There don't appear to be any related tests. Discuss with team on any rollout plans we should make here or documentation for customers beyond the breaking change.

@marcpopMSFT marcpopMSFT added the breaking-change Using this label will notify dotnet/compat and trigger a request to file a compat bug label Dec 15, 2025
@dotnet-policy-service
Copy link
Contributor

Added needs-breaking-change-doc-created label because this PR has the breaking-change label.

When you commit this breaking change:

  1. Create and link to this PR and the issue a matching issue in the dotnet/docs repo using the breaking change documentation template, then remove this needs-breaking-change-doc-created label.
  2. Ask a committer to mail the .NET SDK Breaking Change Notification email list.

You can refer to the .NET SDK breaking change guidelines

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking-change Using this label will notify dotnet/compat and trigger a request to file a compat bug needs-breaking-change-doc-created

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Consider: drop mono support for .NET Framework apps

3 participants