Skip to content

Remove net472 containers#53547

Open
YuliiaKovalova wants to merge 5 commits intorelease/10.0.3xxfrom
dev/ykovalova/remove_net472_containers
Open

Remove net472 containers#53547
YuliiaKovalova wants to merge 5 commits intorelease/10.0.3xxfrom
dev/ykovalova/remove_net472_containers

Conversation

@YuliiaKovalova
Copy link
Member

@YuliiaKovalova YuliiaKovalova commented Mar 20, 2026

Summary

Remove the net472 target from the Containers SDK (Microsoft.NET.Build.Containers), keeping only the .NET Core ($(SdkTargetFramework)) target.

The net472 build existed to support Visual Studio's Full-Framework MSBuild (MSBuildRuntimeType == Full). Now that VS uses .NET Runtime with HostObject support for container operations, the net472 target and all this infrastructure is no longer needed.

Fixes

dotnet/msbuild#11333

@github-actions github-actions bot added the Area-Containers Related to dotnet SDK containers functionality label Mar 20, 2026
@YuliiaKovalova YuliiaKovalova changed the base branch from main to release/10.0.3xx March 23, 2026 12:35
@YuliiaKovalova YuliiaKovalova changed the title remove net472 containers Remove net472 containers Mar 23, 2026
@YuliiaKovalova YuliiaKovalova marked this pull request as ready for review March 23, 2026 17:14
@YuliiaKovalova YuliiaKovalova requested a review from a team as a code owner March 23, 2026 17:14
Copilot AI review requested due to automatic review settings March 23, 2026 17:14
@YuliiaKovalova
Copy link
Member Author

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

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

This PR removes the net472 target and associated packaging/test/layout infrastructure from the Containers SDK (Microsoft.NET.Build.Containers), aligning with the move away from Full Framework MSBuild for VS container operations.

Changes:

  • Drop multi-targeting ($(SdkTargetFramework);net472) for Microsoft.NET.Build.Containers and related integration tests, removing net472-only source/test shims.
  • Remove net472 task publishing/packaging outputs (layout + nupkg content) and update package content expectations accordingly.
  • Update the shipped .props to always point at the .NET (net10.0) task implementation.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
test/UnitTests.proj Stops including Containers integration tests in the TestFullMSBuild/net472 run.
test/Microsoft.NET.Build.Containers.IntegrationTests/PackageTests.cs Updates dependency and nupkg content assertions to remove tasks/net472 expectations.
test/Microsoft.NET.Build.Containers.IntegrationTests/Microsoft.NET.Build.Containers.IntegrationTests.csproj Removes net472 target and related conditional compilation setup.
test/Microsoft.NET.Build.Containers.IntegrationTests/FullFramework/CreateNewImageToolTaskTests.cs Deletes Full Framework–specific tests for the removed ToolTask-based implementation.
src/Layout/redist/targets/GenerateLayout.targets Removes publishing of net472 task assets into the redist layout.
src/Layout/redist/targets/Crossgen.targets Updates comment to reflect removal of net472 components.
src/Containers/packaging/package.csproj Removes net472 packaging path and dependency harvesting for net472 tasks.
src/Containers/packaging/build/Microsoft.NET.Build.Containers.props Removes MSBuild runtime-based TFM selection; uses only net10.0 tasks and updates UsingTask declarations.
src/Containers/Microsoft.NET.Build.Containers/net472Definitions.cs Deletes net472-only polyfills (IsExternalInit, NotNullWhenAttribute).
src/Containers/Microsoft.NET.Build.Containers/Tasks/CreateNewImageToolTask.cs Deletes the net472 ToolTask-based shim implementation.
src/Containers/Microsoft.NET.Build.Containers/Tasks/ComputeDotnetBaseImageAndTag.cs Removes now-unused NETFRAMEWORK-only using directives.
src/Containers/Microsoft.NET.Build.Containers/PublicAPI/net472/PublicAPI.Unshipped.txt Removes net472 public API baseline.
src/Containers/Microsoft.NET.Build.Containers/PublicAPI/net472/PublicAPI.Shipped.txt Removes net472 public API baseline header.
src/Containers/Microsoft.NET.Build.Containers/Microsoft.NET.Build.Containers.csproj Removes net472 TFM and all net472-specific compile/package reference conditionals.
src/Containers/Microsoft.NET.Build.Containers/ContainerHelpers.cs Removes NETFRAMEWORK/NET conditional usings now that net472 is gone.

@baronfel
Copy link
Member

This looks correct, however anyone still using the Microsoft.Net.Build.Containers NuGet package and using an older version of VS will be broken if they upgrade. We need to stop publishing the package now that it's baked into the SDK too.

@YuliiaKovalova
Copy link
Member Author

This looks correct, however anyone still using the Microsoft.Net.Build.Containers NuGet package and using an older version of VS will be broken if they upgrade. We need to stop publishing the package now that it's baked into the SDK too.

@marcpopMSFT & @mmitche could you please check this comment? Do you have any concerns regarding removing this package from publishing?

@mmitche
Copy link
Member

mmitche commented Mar 24, 2026

This looks correct, however anyone still using the Microsoft.Net.Build.Containers NuGet package and using an older version of VS will be broken if they upgrade. We need to stop publishing the package now that it's baked into the SDK too.

@marcpopMSFT & @mmitche could you please check this comment? Do you have any concerns regarding removing this package from publishing?

Only concern is that it shows up as a package ref somewhere we don't expect, but we should find that in testing. Mark the package as non-shipping and I think that should about do it.

@marcpopMSFT marcpopMSFT requested a review from lbussell March 24, 2026 20:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area-Containers Related to dotnet SDK containers functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants