dotnet / dotnet/msbuild

Migrate Tasks in the Roslyn repo to the new Task type

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

Description

Roslyn ships the compiler tasks that run in every .NET build. Until they are migrated, an `-mt` build sends them to a separate task host process. While overhead of `csc` task is not as big percentage-wise, it cancels out much of the benefit of multithreaded mode for small solutions builds just because of start-up of the task host.

The tasks are migrated: telemetry shows 6 of 7 Roslyn tasks enlightened (86%). What is left would be migrated on demand if telemetry or perf tests would show its benefit.

## Steps

- [x] Migrate the Roslyn tasks [size M]
- [ ] [#14257](https://github.com/dotnet/msbuild/issues/14257) Migrate the remaining tasks [size S]

## Stakeholders

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

## Definition of done

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

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the remaining-task work tracked in issue #14257 and review which Roslyn compiler tasks are still outside the new Task type. Check the migration status and telemetry or performance-test evidence for the remaining task. Done means every Roslyn task runs in multithreaded mode or is explicitly recorded as intentionally left out.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
build-system
Issue type
Refactor
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.