dotnet / dotnet/msbuild

[Multithreaded] Migrate tasks in SDK

Open
#11,835 2 comments 0 reactions 0 assignees View on GitHub
Area: Tasks Epic triaged
Dominant language
C#
Stars
5.5k
Forks
1.5k
Avg merge
1d 8h
Merged PRs (30d)
141

Description

The .NET SDK ships the tasks that almost every build actually runs. Until they are migrated, an `-mt` build sends them to a separate task host process, which cancels out much of the benefit of multithreaded mode.

Most tasks are done: 46 of 63 SDK tasks enlightened (73%). What is left would be migrated on demand if telemetry or perf tests would show its benefit.

## Steps

- [x] Migrate the tasks that only needed the attribute [size M]
- [x] Migrate the simple tasks: static web assets and SourceLink, etc [size L]
- [x] Migrate the complex tasks: deps file, package and targeting pack resolution, etc [size XL]
- [ ] Migrate the remaining tasks [size L]

## Stakeholders

Everyone building a .NET project with `-mt`. SDK tasks run in nearly every build, so each unmigrated task directly costs build time.

## Definition of done

Every SDK task either runs in multithreaded mode, or is recorded as intentionally left out.

Task migration checklist

# Task Migration Checklist
These are tasks that do something that requies anything else than just using the attribute.
Some of these will still be fairly simple. When I run into more complex ones, I will create sub-tickets accordingly.

- [x] AllowEmptyTelemetry
- [ ] ChangeEntryPointLibraryName
- [x] CheckForTargetInAssetsFile
- [x] CheckForUnsupportedWinMDReferences
- [x] CreateAppHost
- [ ] CreateComHost
- [ ] ExtractArchiveToDirectory
- [ ] FilterResolvedFiles
- [x] GenerateBundle
- [x] GenerateClsidMap
- [x] GenerateDepsFile
- [ ] GenerateMSBuildExtensionsSWR
- [ ] GenerateRegFreeComManifest
- [ ] GenerateRuntimeAnalyzersSWR
- [x] GenerateRuntimeConfigurationFiles
- [ ] GenerateSdkRuntimeIdentifierChain
- [ ] GenerateShims
- [x] GenerateToolsSettingsFile
- [x] GetAssemblyAttributes
- [ ] GetDependencyInfo
- [x] GetDependsOnNETStandard
- [x] GetPackageDirectory
- [x] GetPackagesToPrune
- [ ] GetRuntimePackRids
- [ ] OverrideAndCreateBundledNETCoreAppPackageVersion
- [x] PickBestRid
- [ ] PrepareForReadyToRunCompilation
- [x] ProcessFrameworkReferences
- [ ] ProcessRuntimeAnalyzerVersions
- [ ] ProduceContentAssets
- [ ] RemoveAssetFromDepsPackages
- [ ] ReplaceFileContents
- [ ] ReplaceFilesWithSymbolicLinks
- [x] ResolveAppHosts
- [ ] ResolveCopyLocalAssets
- [x] ResolvePackageAssets
- [x] ResolvePackageDependencies
- [ ] ResolveReadyToRunCompilers
- [x] ResolveRuntimePackAssets
- [x] ResolveTargetingPackAssets
- [ ] RunReadyToRunCompiler
- [x] SelectRuntimeIdentifierSpecificItems
- [ ] SetGeneratedAppConfigMetadata
- [ ] ShowMissingWorkloads
- [ ] TarGzFileCreateFromDirectory
- [ ] UpdateRuntimeConfig
- [x] ValidateExecutableReferences
- [x] WriteAppConfigWithSupportedRuntime
- [ ] ZipFileCreateFromDirectory

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.