Skip to content

Use NET=Runtime on tasks and delete .NET Framework task implementations#4554

Merged
ViktorHofer merged 5 commits intomainfrom
TryArcadeNETTasks
Mar 10, 2026
Merged

Use NET=Runtime on tasks and delete .NET Framework task implementations#4554
ViktorHofer merged 5 commits intomainfrom
TryArcadeNETTasks

Conversation

@ViktorHofer
Copy link
Copy Markdown
Member

@ViktorHofer ViktorHofer commented Jan 30, 2026

Validation build for dotnet/arcade#16413

@ViktorHofer
Copy link
Copy Markdown
Member Author

Needs dotnet/sdk#52774

@ViktorHofer ViktorHofer marked this pull request as ready for review March 10, 2026 13:50
Copilot AI review requested due to automatic review settings March 10, 2026 13:50
@ViktorHofer
Copy link
Copy Markdown
Member Author

Official build passed and local validation in a couple of repos outside of the VMR also passed.

Copy link
Copy Markdown
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 aligns Arcade/VMR build tasks to run under Runtime="NET" and removes legacy .NET Framework task implementations, as part of validating upstream changes from dotnet/arcade.

Changes:

  • Update many UsingTask declarations to specify Runtime="NET" and simplify task assembly selection to tools/net.
  • Remove .NET Framework TFMs / conditional code paths across multiple build-task projects and utilities.
  • Migrate SignCheck usage from an Exec-invoked exe to the Microsoft.DotNet.SignCheckTask MSBuild task, and adjust related tooling/tests.

Reviewed changes

Copilot reviewed 186 out of 186 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
src/windowsdesktop/src/windowsdesktop/src/bundle/Wix.targets Run DownloadFile task with Runtime="NET".
src/sdk/src/Tasks/sdk-tasks/sdk-tasks.InTree.targets Use Runtime="NET" consistently for in-tree SDK tasks and Arcade DownloadFile.
src/sdk/src/Layout/redist/targets/BundledManifests.targets Replace SignCheck.exe Exec with Microsoft.DotNet.SignCheckTask.
src/sdk/Directory.Packages.props Swap package version to Microsoft.DotNet.SignCheckTask.
src/runtime/src/libraries/sfx-finish.proj Remove legacy CreateFrameworkListFile UsingTask location.
src/runtime/src/libraries/pretest.proj Remove legacy CreateFrameworkListFile UsingTask location.
src/roslyn/src/Setup/DevDivInsertionFiles/DevDivInsertionFiles.csproj Force Arcade tasks to run with Runtime="NET".
src/roslyn/src/NuGet/VS.Tools.Roslyn.Package/VS.Tools.Roslyn.Package.csproj Force Arcade task to run with Runtime="NET".
src/roslyn/eng/targets/Imports.targets Force Arcade tasks to run with Runtime="NET".
src/roslyn/eng/targets/GeneratePkgDef.targets Force VS + Arcade tasks to run with Runtime="NET".
src/aspnetcore/src/Installers/Windows/Wix.targets Remove .NET Framework-specific task assembly selection.
src/aspnetcore/eng/tools/RepoTasks/RepoTasks.tasks Remove legacy tasks; set Arcade DownloadFile to Runtime="NET".
src/aspnetcore/eng/tools/RepoTasks/GenerateSharedFrameworkDepsFile.cs Delete legacy .NET Framework task implementation.
src/aspnetcore/eng/tools/RepoTasks/CreateFrameworkListFile.cs Delete legacy .NET Framework task implementation.
src/arcade/tests/XHarness.Tests.Common.props Simplify Helix task assembly path and task factory settings.
src/arcade/tests/UnitTests.proj Simplify Helix task assembly path; remove .NET Core-only exclusion.
src/arcade/src/VersionTools/Microsoft.DotNet.VersionTools.Tasks.Tests/Microsoft.DotNet.VersionTools.Tasks.Tests.csproj Remove deleted/obsolete test project.
src/arcade/src/SignCheck/SignCheckTask/src/SignCheckTask.cs Remove .NET Framework AppDomain task implementation.
src/arcade/src/SignCheck/SignCheckTask/build/Microsoft.DotNet.SignCheckTask.props Point to lib/net and use Runtime="NET" for task.
src/arcade/src/SignCheck/SignCheckTask/Microsoft.DotNet.SignCheckTask.csproj Drop multi-targeting; keep only bundled .NET.
src/arcade/src/SignCheck/SignCheck/Microsoft.DotNet.SignCheck.csproj Convert SignCheck CLI into a packed .NET tool and adjust packing behavior.
src/arcade/src/SignCheck/SignCheck/App.config Remove .NET Framework app config.
src/arcade/src/SignCheck/README.md Update SignCheck documentation for new execution model.
src/arcade/src/SignCheck/Microsoft.SignCheck/Verification/VsixVerifier.cs Delete VSIX verifier implementation.
src/arcade/src/SignCheck/Microsoft.SignCheck/Verification/SignatureVerificationManager.cs Replace #if NETFRAMEWORK with runtime OS checks.
src/arcade/src/SignCheck/Microsoft.SignCheck/Verification/LZMAUtils.cs Remove .NET Framework fallback for ReadExactly.
src/arcade/src/SignCheck/Microsoft.SignCheck/Verification/ExeVerifier.cs Remove NETFRAMEWORK gating; enable bundle extraction path.
src/arcade/src/SignCheck/Microsoft.SignCheck/Verification/AuthentiCodeVerifier.cs Remove .NET Framework gating; always use PEReader path.
src/arcade/src/SignCheck/Microsoft.SignCheck/Verification/AuthentiCode.cs Remove .NET Framework WinTrust path; keep .NET implementation.
src/arcade/src/SignCheck/Microsoft.SignCheck/Utils.cs Remove conditional compilation; keep .NET-only helpers.
src/arcade/src/SignCheck/Microsoft.SignCheck/Microsoft.DotNet.SignCheckLibrary.csproj Drop multi-targeting; move Windows-only deps into net build.
src/arcade/src/SignCheck/Microsoft.SignCheck/Interop/StructuredStorage.cs Suppress CA1416 platform warnings for interop.
src/arcade/src/Microsoft.DotNet.XliffTasks/build/Microsoft.DotNet.XliffTasks.targets Use Runtime="NET" tasks and remove netframework tool path logic.
src/arcade/src/Microsoft.DotNet.XliffTasks/Microsoft.DotNet.XliffTasks.csproj Drop multi-targeting to bundled .NET only.
src/arcade/src/Microsoft.DotNet.XUnitExtensions/tests/Microsoft.DotNet.XUnitExtensions.Tests.csproj Switch .NET Framework TFM property used by tests.
src/arcade/src/Microsoft.DotNet.Tar/Program.cs Remove Tar tool program (legacy).
src/arcade/src/Microsoft.DotNet.Tar/Microsoft.DotNet.Tar.csproj Remove Tar tool project (legacy).
src/arcade/src/Microsoft.DotNet.SwaggerGenerator/Microsoft.DotNet.SwaggerGenerator.MSBuild/build/Microsoft.DotNet.SwaggerGenerator.MSBuild.targets Force Swagger MSBuild task to run with Runtime="NET"/TaskHostFactory.
src/arcade/src/Microsoft.DotNet.SwaggerGenerator/Microsoft.DotNet.SwaggerGenerator.MSBuild/build/Microsoft.DotNet.SwaggerGenerator.MSBuild.props Remove netframework tool path logic.
src/arcade/src/Microsoft.DotNet.SwaggerGenerator/Microsoft.DotNet.SwaggerGenerator.MSBuild/Microsoft.DotNet.SwaggerGenerator.MSBuild.csproj Drop multi-targeting; adjust output/packing behavior.
src/arcade/src/Microsoft.DotNet.SwaggerGenerator/Microsoft.DotNet.SwaggerGenerator.CodeGenerator/Microsoft.DotNet.SwaggerGenerator.CodeGenerator.csproj Reduce TFMs to $(NetMinimum) and simplify dependencies.
src/arcade/src/Microsoft.DotNet.StrongName/Signing.cs Update comment text.
src/arcade/src/Microsoft.DotNet.StrongName/Microsoft.DotNet.StrongName.csproj Drop multi-targeting and task-specific dependencies.
src/arcade/src/Microsoft.DotNet.SourceBuild/tasks/build/Microsoft.DotNet.SourceBuild.Tasks.props Use Runtime="NET" for SourceBuild tasks and simplify assembly path.
src/arcade/src/Microsoft.DotNet.SourceBuild/tasks/Microsoft.DotNet.SourceBuild.Tasks.csproj Drop multi-targeting to bundled .NET only.
src/arcade/src/Microsoft.DotNet.SignTool/src/VerifySignatures.cs Remove .NET Framework conditionals and keep .NET paths.
src/arcade/src/Microsoft.DotNet.SignTool/src/SignToolTask.cs Remove AppDomain-isolated .NET Framework task implementation; drop TarToolPath usage.
src/arcade/src/Microsoft.DotNet.SignTool/src/SignToolArgs.cs Remove TarToolPath from args.
src/arcade/src/Microsoft.DotNet.SignTool/src/SignTool.cs Remove .NET Framework-specific zip extraction fallback.
src/arcade/src/Microsoft.DotNet.SignTool/src/Configuration.cs Remove TarToolPath wiring into container processing.
src/arcade/src/Microsoft.DotNet.SignTool/src/BatchSignUtil.cs Remove TarToolPath from repack call site.
src/arcade/src/Microsoft.DotNet.SignTool/build/Microsoft.DotNet.SignTool.props Simplify task assembly selection and set Runtime="NET".
src/arcade/src/Microsoft.DotNet.SignTool/Microsoft.DotNet.SignTool.csproj Drop multi-targeting; adjust dependencies.
src/arcade/src/Microsoft.DotNet.SignTool.Tests/Microsoft.DotNet.SignTool.Tests.csproj Drop netframework target; remove Tar tool copy logic.
src/arcade/src/Microsoft.DotNet.SharedFramework.Sdk/targets/sharedfx.targets Remove in-file UsingTask declarations (moved to BuildTask.props).
src/arcade/src/Microsoft.DotNet.SharedFramework.Sdk/sdk/BuildTask.props Centralize tasks with Runtime="NET" and simplify task dir selection.
src/arcade/src/Microsoft.DotNet.SharedFramework.Sdk/Microsoft.DotNet.SharedFramework.Sdk.csproj Drop multi-targeting and remove desktop-only sources.
src/arcade/src/Microsoft.DotNet.PackageTesting/build/Microsoft.DotNet.PackageTesting.props Simplify tools path and set tasks to Runtime="NET".
src/arcade/src/Microsoft.DotNet.PackageTesting/Microsoft.DotNet.PackageTesting.csproj Drop multi-targeting and remove netframework-only deps.
src/arcade/src/Microsoft.DotNet.PackageTesting.Tests/Microsoft.DotNet.PackageTesting.Tests.csproj Drop multi-targeting and simplify test references.
src/arcade/src/Microsoft.DotNet.NuGetRepack/tasks/src/UpdatePackageVersionTask.cs Remove net472 AppDomain-isolated task code.
src/arcade/src/Microsoft.DotNet.NuGetRepack/tasks/src/ReplacePackageParts.cs Remove net472 AppDomain-isolated task code.
src/arcade/src/Microsoft.DotNet.NuGetRepack/tasks/src/AssemblyResolution.cs Remove net472-only assembly resolver.
src/arcade/src/Microsoft.DotNet.NuGetRepack/tasks/Microsoft.DotNet.NuGetRepack.Tasks.csproj Drop multi-targeting and framework-specific references.
src/arcade/src/Microsoft.DotNet.MacOsPkg/Cli/Microsoft.DotNet.MacOsPkg.Cli.csproj Drop multi-targeting; keep bundled .NET tool config.
src/arcade/src/Microsoft.DotNet.Helix/Sdk/tools/Microsoft.DotNet.Helix.Sdk.props Add SDK import/workaround for Runtime="NET" and set tasks to out-of-proc execution.
src/arcade/src/Microsoft.DotNet.Helix/Sdk/Microsoft.DotNet.Helix.Sdk.csproj Drop multi-targeting; adjust output/pack behavior and deps.
src/arcade/src/Microsoft.DotNet.Helix/Sdk/FindDotNetCliPackage.cs Remove conditional HTTP handler selection.
src/arcade/src/Microsoft.DotNet.Helix/Sdk/BaseTask.Desktop.cs Remove desktop-only assembly resolver hook.
src/arcade/src/Microsoft.DotNet.Helix/Sdk/AzureDevOpsTask.cs Remove conditional HTTP handler selection.
src/arcade/src/Microsoft.DotNet.Helix/JobSender/Microsoft.DotNet.Helix.JobSender.csproj Drop multi-targeting and desktop-only packing rules.
src/arcade/src/Microsoft.DotNet.Helix/Client/CSharp/generated-code/HelixApi.cs Remove conditional [Obsolete] annotations.
src/arcade/src/Microsoft.DotNet.Helix/Client/CSharp/Microsoft.DotNet.Helix.Client.csproj Drop multi-targeting and desktop-only dependencies/imports.
src/arcade/src/Microsoft.DotNet.Git.IssueManager/src/Models/AzureDevOpsCommit.cs Remove legacy IssueManager model.
src/arcade/src/Microsoft.DotNet.Git.IssueManager/src/Microsoft.DotNet.Git.IssueManager.csproj Remove legacy IssueManager project.
src/arcade/src/Microsoft.DotNet.Git.IssueManager/src/IssueManager.cs Remove legacy IssueManager API.
src/arcade/src/Microsoft.DotNet.Git.IssueManager/src/Helpers/RepositoryHelper.cs Remove legacy helper implementation.
src/arcade/src/Microsoft.DotNet.Git.IssueManager/src/Helpers/CollectionExtensions.cs Remove legacy collection helper.
src/arcade/src/Microsoft.DotNet.Git.IssueManager/src/Clients/GitHubClient.cs Remove legacy GitHub client wrapper.
src/arcade/src/Microsoft.DotNet.Git.IssueManager/src/Clients/AzureDevOpsClient.cs Remove legacy Azure DevOps client wrapper.
src/arcade/src/Microsoft.DotNet.GenFacades/build/Microsoft.DotNet.GenFacades.targets Simplify tool path selection.
src/arcade/src/Microsoft.DotNet.GenFacades/build/Microsoft.DotNet.GenFacades.PartialFacadeSource.targets Set Runtime="NET" for tasks.
src/arcade/src/Microsoft.DotNet.GenFacades/build/Microsoft.DotNet.GenFacades.NotSupported.targets Set Runtime="NET" for tasks.
src/arcade/src/Microsoft.DotNet.GenFacades/build/Microsoft.DotNet.GenFacades.ClearVersion.targets Set Runtime="NET" for tasks.
src/arcade/src/Microsoft.DotNet.GenFacades/RoslynBuildTask.cs Remove non-core assembly resolve path.
src/arcade/src/Microsoft.DotNet.GenFacades/Microsoft.DotNet.GenFacades.csproj Drop multi-targeting and desktop-only sources.
src/arcade/src/Microsoft.DotNet.GenAPI/build/Microsoft.DotNet.GenAPI.targets Simplify tool path selection and set Runtime="NET".
src/arcade/src/Microsoft.DotNet.GenAPI/Microsoft.DotNet.GenAPI.csproj Drop multi-targeting to bundled .NET only.
src/arcade/src/Microsoft.DotNet.Deployment.Tasks.Links/src/AkaMSLinksBase.cs Remove preprocessor version branching for cert loading.
src/arcade/src/Microsoft.DotNet.Deployment.Tasks.Links/build/Microsoft.DotNet.Deployment.Tasks.Links.props Simplify tool path selection and set Runtime="NET".
src/arcade/src/Microsoft.DotNet.Deployment.Tasks.Links/Microsoft.DotNet.Deployment.Tasks.Links.csproj Drop multi-targeting and netframework-only references.
src/arcade/src/Microsoft.DotNet.CMake.Sdk/sdk/ProjectReference.targets Simplify tool path selection and set Runtime="NET".
src/arcade/src/Microsoft.DotNet.CMake.Sdk/build/Microsoft.DotNet.CMake.Sdk.targets Simplify tool path selection and set Runtime="NET".
src/arcade/src/Microsoft.DotNet.CMake.Sdk/Microsoft.DotNet.CMake.Sdk.csproj Drop multi-targeting and remove custom packing globs.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Workloads/src/build/Microsoft.DotNet.Build.Tasks.Workloads.props Simplify tools path selection and set Runtime="NET".
src/arcade/src/Microsoft.DotNet.Build.Tasks.Workloads/src/Microsoft.DotNet.Build.Tasks.Workloads.csproj Drop multi-targeting and netframework-only deps.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Workloads.Tests/Microsoft.DotNet.Build.Tasks.Workloads.Tests.csproj Drop multi-targeting and netframework-only deps.
src/arcade/src/Microsoft.DotNet.Build.Tasks.VisualStudio/Microsoft.DotNet.Build.Tasks.VisualStudio.csproj Move VS build tasks to bundled .NET and update deps.
src/arcade/src/Microsoft.DotNet.Build.Tasks.VisualStudio.Tests/OptProf/GetRunSettingsSessionConfigurationTests.cs Make string comparisons ignore line ending differences.
src/arcade/src/Microsoft.DotNet.Build.Tasks.VisualStudio.Tests/OptProf/GenerateTrainingInputFilesTests.cs Mark VSIX test as Windows-only and ignore line ending differences.
src/arcade/src/Microsoft.DotNet.Build.Tasks.VisualStudio.Tests/Microsoft.DotNet.Build.Tasks.VisualStudio.Tests.csproj Move tests to bundled .NET and add XUnitExtensions reference.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Templating/test/Microsoft.DotNet.Build.Tasks.Templating.Tests.csproj Drop multi-targeting to bundled .NET only.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Templating/src/build/Microsoft.DotNet.Build.Tasks.Templating.props Simplify tools path selection and set Runtime="NET".
src/arcade/src/Microsoft.DotNet.Build.Tasks.Templating/src/Microsoft.DotNet.Build.Tasks.Templating.csproj Drop multi-targeting to bundled .NET only.
src/arcade/src/Microsoft.DotNet.Build.Tasks.TargetFramework/src/buildMultiTargeting/Microsoft.DotNet.Build.Tasks.TargetFramework.targets Set Runtime="NET" for tasks.
src/arcade/src/Microsoft.DotNet.Build.Tasks.TargetFramework/src/build/Microsoft.DotNet.Build.Tasks.TargetFramework.targets Set Runtime="NET" for tasks.
src/arcade/src/Microsoft.DotNet.Build.Tasks.TargetFramework/src/build/Microsoft.DotNet.Build.Tasks.TargetFramework.props Simplify tools path selection.
src/arcade/src/Microsoft.DotNet.Build.Tasks.TargetFramework/src/build/BinPlace.targets Set Runtime="NET" for tasks.
src/arcade/src/Microsoft.DotNet.Build.Tasks.TargetFramework/src/Microsoft.DotNet.Build.Tasks.TargetFramework.csproj Drop multi-targeting and desktop-only sources.
src/arcade/src/Microsoft.DotNet.Build.Tasks.TargetFramework/src/ChooseBestP2PTargetFrameworkTask.cs Remove NETFRAMEWORK/NETSTANDARD parsing fallback.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Packaging/tests/Microsoft.DotNet.Build.Tasks.Packaging.Tests.csproj Drop multi-targeting to bundled .NET only.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Packaging/src/build/Microsoft.DotNet.Build.Tasks.Packaging.props Import SDK bundled versions/workaround for Runtime="NET" support.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Packaging/src/Microsoft.DotNet.Build.Tasks.Packaging.csproj Drop multi-targeting and desktop-only sources.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Installers/src/StreamHelpers.cs Remove .NET Framework stream helper fallbacks.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Installers/src/RpmBuilder.cs Remove #if NET gates for newer architectures.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Installers/src/HexConverter.cs Use Convert alias unconditionally.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Installers/src/CreateRpmPackage.cs Remove #if NET gates for newer architectures.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Installers/src/CreateMD5SumsFile.cs Use Convert.ToHexStringLower unconditionally.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Installers/src/ArWriter.cs Remove .NET Framework write fallbacks.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Installers/src/ArReader.cs Remove .NET Framework read fallbacks.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Installers/build/wix5/wix.targets Set WiX Heat task to Runtime="NET".
src/arcade/src/Microsoft.DotNet.Build.Tasks.Installers/build/installer.props Set installer tasks to Runtime="NET".
src/arcade/src/Microsoft.DotNet.Build.Tasks.Installers/build/bundle.targets Set macOS distribution task to Runtime="NET".
src/arcade/src/Microsoft.DotNet.Build.Tasks.Installers/build/acquisition/acquire-wix/acquire-wix.proj Run DownloadFile with Runtime="NET".
src/arcade/src/Microsoft.DotNet.Build.Tasks.Installers/build/Microsoft.DotNet.Build.Tasks.Installers.props Simplify task assembly selection.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Installers/Microsoft.DotNet.Build.Tasks.Installers.csproj Drop multi-targeting and desktop-only sources.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Feed/src/common/NativeMethods.cs Remove non-NET DllImport fallbacks in favor of LibraryImport.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifest.cs Remove preprocessor version branching for cert loading.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Feed/build/Microsoft.DotNet.Build.Tasks.Feed.targets Simplify tools dir selection; set tasks to Runtime="NET".
src/arcade/src/Microsoft.DotNet.Build.Tasks.Feed/Microsoft.DotNet.Build.Tasks.Feed.csproj Drop multi-targeting and adjust source-build conditionals.
src/arcade/src/Microsoft.DotNet.Build.Tasks.Archives/Microsoft.DotNet.Build.Tasks.Archives.csproj Switch to Microsoft.Build.NoTargets SDK.
src/arcade/src/Microsoft.DotNet.Build.Manifest/Microsoft.DotNet.Build.Manifest.csproj Drop multi-targeting and remove BuildTask.Packages.props import.
src/arcade/src/Microsoft.DotNet.Baselines.Tasks/build/Microsoft.DotNet.Baselines.Tasks.targets Simplify tools dir selection; set task to Runtime="NET".
src/arcade/src/Microsoft.DotNet.Baselines.Tasks/Microsoft.DotNet.Baselines.Tasks.csproj Fix incorrect TargetFrameworks property usage.
src/arcade/src/Microsoft.DotNet.ArcadeLogging/Microsoft.DotNet.ArcadeLogging.csproj Document why logger keeps .NET Framework support.
src/arcade/src/Microsoft.DotNet.ArcadeAzureIntegration/TokenCredentialShortCache.cs Remove #if !NET472_OR_GREATER guards.
src/arcade/src/Microsoft.DotNet.ArcadeAzureIntegration/Microsoft.DotNet.ArcadeAzureIntegration.csproj Drop multi-targeting to bundled .NET only.
src/arcade/src/Microsoft.DotNet.ArcadeAzureIntegration/DefaultIdentityTokenCredentialOptions.cs Remove #if !NET472_OR_GREATER guards.
src/arcade/src/Microsoft.DotNet.ArcadeAzureIntegration/DefaultIdentityTokenCredential.cs Remove #if !NET472_OR_GREATER guards.
src/arcade/src/Microsoft.DotNet.ArcadeAzureIntegration/AzureCliCredentialWithAzNoUpdateWrapper.cs Remove #if !NET472_OR_GREATER guards.
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/VisualStudio.props Point VS build tasks assembly to tools/net.
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/VisualStudio.VsixBuild.targets Run VSIX task with Runtime="NET".
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/VisualStudio.BuildIbcTrainingInputs.targets Point to tools/net and run tasks with Runtime="NET".
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/VisualStudio.AcquireOptimizationData.targets Point to tools/net and run tasks with Runtime="NET".
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/Version.targets Run versioning task with Runtime="NET".
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/Tools.proj Switch tool restore to PackageDownload and adjust restore properties.
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/Sign.proj Remove TarToolPath wiring into SignTool task.
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/VisualStudio.BuildIbcTrainingSettings.proj Point to tools/net and run task with Runtime="NET".
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishBuildAssets.proj Move SDK task runner to bundled .NET.
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/CreateBaselineUpdatePR.proj Move SDK task runner to bundled .NET.
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/RepositoryValidation.proj Run validation tasks with Runtime="NET".
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/RepositoryInfo.targets Run SourceLink target generator with Runtime="NET".
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj Run checksum generator with Runtime="NET".
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/OptimizationData.targets Run Arcade tasks with Runtime="NET".
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/InstallDotNetCore.targets Run install task with Runtime="NET".
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/GenerateResxSource.targets Run resx generator with Runtime="NET".
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/GenerateChecksums.targets Run checksum generator with Runtime="NET".
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/BuildTasks.props Import bundled SDK versions and simplify tasks assembly selection to net.
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/BuildReleasePackages.targets Run NuGetRepack task with Runtime="NET".
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/src/Unsign.cs Remove net472 AppDomain-isolated task code.
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/src/SetCorFlags.cs Remove net472 AppDomain-isolated task code.
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/src/InstallDotNetCore.cs Remove net472 AppDomain-isolated task code.
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/src/GetLicenseFilePath.cs Remove net472 fallback file enumeration logic.
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/src/DownloadFile.cs Remove legacy HttpClientHandler fallback code path.
src/arcade/src/Microsoft.DotNet.Arcade.Sdk/Microsoft.DotNet.Arcade.Sdk.csproj Drop multi-targeting; adjust ArcadeLogging packing behavior.
src/arcade/src/Microsoft.Cci.Extensions/Microsoft.Cci.Extensions.csproj Drop multi-targeting and desktop-only dependencies/imports.
src/arcade/src/Common/Microsoft.Arcade.Test.Common/Microsoft.Arcade.Test.Common.csproj Drop multi-targeting and netframework-only reference.
src/arcade/src/Common/Microsoft.Arcade.Common/Microsoft.Arcade.Common.csproj Drop multi-targeting and desktop-only dependencies/imports.
src/arcade/src/Common/Microsoft.Arcade.Common/MSBuildTaskBase.Desktop.cs Remove desktop-only assembly resolver hook.
src/arcade/src/Common/Microsoft.Arcade.Common/Command.cs Remove NET45 environment variable fallback.
src/arcade/src/Common/Internal/BuildTask.Desktop.cs Remove desktop-only assembly resolver hook.
src/arcade/src/Common/Internal/AssemblyResolver.cs Remove desktop-only assembly resolver implementation.
src/arcade/src/Common/Internal/AssemblyResolution.cs Remove net472-only assembly resolution implementation.
src/arcade/eng/common/core-templates/post-build/post-build.yml Remove -msbuildEngine vs from SigningValidation invocation.
src/arcade/eng/Versions.props Remove source-build-only “maintenance packages” property groups.
src/arcade/eng/Version.Details.xml Remove no-longer-needed dependencies and coherent parent metadata.
src/arcade/eng/Version.Details.props Remove no-longer-needed dependency version properties.
src/arcade/Documentation/HowToCreatePackages.md Update .NET Framework guidance to current Arcade TFMs.
src/arcade/Directory.Packages.props Remove legacy packages; update package IDs/versions.
src/arcade/Arcade.slnx Remove deleted projects from solution.
src/arcade/eng/Microsoft.DotNet.SwaggerGenerator.MSBuild.InTree.targets Simplify in-tree swagger generator output path and P2P wiring.
src/arcade/eng/BuildTask.targets Rework build-task packing to depend on published outputs and a single TFM layout.
src/arcade/eng/BuildTask.Packages.props Delete legacy .NET Framework package-version pinning file.
Comments suppressed due to low confidence (1)

src/arcade/src/SignCheck/Microsoft.SignCheck/Verification/ExeVerifier.cs:30

  • ExeVerifier uses WiX's Unbinder to extract Burn bundles when VerifyRecursive is enabled, but this code is not guarded by an OS check. Since the verifier is registered unconditionally, SignCheck can attempt this on non-Windows and fail at runtime. Consider gating the Burn-bundle extraction (and/or registration of ExeVerifier) behind OperatingSystem.IsWindows() or handling missing WiX support gracefully.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Member

@wtgodbe wtgodbe left a comment

Choose a reason for hiding this comment

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

Aspnetcore part looks good, Arcade part looks reasonable

@ViktorHofer
Copy link
Copy Markdown
Member Author

ViktorHofer commented Mar 10, 2026

There will most certainly be some fallout from this change even with the additional validation that I performed. I will monitor builds and the flow. I'm happy to revert this if necessary.

@ViktorHofer ViktorHofer merged commit 4e09105 into main Mar 10, 2026
11 checks passed
@ViktorHofer ViktorHofer deleted the TryArcadeNETTasks branch March 10, 2026 20:29
@dotnet-policy-service dotnet-policy-service bot requested review from a team March 10, 2026 20:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants