Skip to content

Migrate SGen task to Task environment API - #13457

Merged
OvesN merged 35 commits into
dotnet:mainfrom
OvesN:dev/veronikao/migrate-SGen-Task-to-TaskEnvironment-API
Apr 15, 2026
Merged

Migrate SGen task to Task environment API#13457
OvesN merged 35 commits into
dotnet:mainfrom
OvesN:dev/veronikao/migrate-SGen-Task-to-TaskEnvironment-API

Conversation

@OvesN

@OvesN OvesN commented Mar 27, 2026

Copy link
Copy Markdown
Contributor

Fixes #13455

Context

The SGen task was made thread-safe.

Changes Made

SGen.cs

  • Routed file existence checks and path resolution through TaskEnvironment.GetAbsolutePath().

Testing

Unit tests in SGen_Tests.cs

Notes

OvesN and others added 16 commits March 20, 2026 13:56
The test relied on FileAttributes.ReadOnly to force File.Delete to throw,
but this is not cross-platform - Unix read-only attributes don't prevent deletion.
ApplyEnvironmentOverrides  moved inside SetUpProcessStartInfo.
Added override for DeleteTempFile using AbsolutePath.
Made Driver private again, expose only enum value to decided if driver is multitheaded.
Made GetProcessStartInfoMultithreadable private.
add overload for DeleteTempFile with AbsolutePath argument
…nto dev/veronikao/migrate-SGen-Task-to-TaskEnvironment-API
@OvesN OvesN self-assigned this Mar 30, 2026
@OvesN
OvesN marked this pull request as draft March 30, 2026 13:09
@OvesN
OvesN changed the base branch from dev/veronikao/migrate-Al-task-to-TaskEnvironment-API to main April 8, 2026 06:38
@OvesN
OvesN marked this pull request as ready for review April 8, 2026 06:54
Copilot AI review requested due to automatic review settings April 8, 2026 06:54

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Migrates the SGen task to the TaskEnvironment API to support thread-safe/multithreaded execution by routing path resolution, file existence checks, and environment variable access through the task environment.

Changes:

  • Marked SGen as multithreadable and updated it to use TaskEnvironment.GetAbsolutePath() / GetEnvironmentVariable().
  • Switched several internal path computations to use AbsolutePath.
  • Added unit tests covering TaskEnvironment integration for tool path resolution, working directory propagation, and BuildAssemblyPath absolutization.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 6 comments.

File Description
src/Tasks/SGen.cs Uses TaskEnvironment for env/path operations and introduces AbsolutePath usage for key paths.
src/Tasks.UnitTests/SGen_Tests.cs Adds tests validating the multithreaded TaskEnvironment behavior for SGen.

Comment thread src/Tasks/SGen.cs Outdated
Comment thread src/Tasks/SGen.cs Outdated
Comment thread src/Tasks/SGen.cs Outdated
Comment thread src/Tasks.UnitTests/SGen_Tests.cs Outdated
Comment thread src/Tasks.UnitTests/SGen_Tests.cs Outdated
Comment thread src/Tasks/SGen.cs
@OvesN
OvesN marked this pull request as draft April 8, 2026 07:55
WarperSan pushed a commit to WarperSan/ThunderPipe that referenced this pull request Jul 22, 2026
Updated
[Microsoft.Build.Utilities.Core](https://github.com/dotnet/msbuild) from
18.6.3 to 18.8.2.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Build.Utilities.Core's
releases](https://github.com/dotnet/msbuild/releases)._

## 18.8.2

## What's Changed
* [vs16.11] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12550
* [vs17.8] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12739
* [vs17.11] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12740
* [vs17.14] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12743
* Add clear error message (MSB4233) for .NET runtime tasks on MSBuild
17.14 by @​baronfel with @​Copilot in
dotnet/msbuild#12662
* [vs17.8] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12759
* [vs17.11] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12760
* [vs17.14] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12762
* [vs17.12] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12744
* Remove audit sources from NuGet.config by @​YuliiaKovalova in
dotnet/msbuild#12796
* Bump System.Configuration.ConfigurationManager to 6.0.0 # by
@​YuliiaKovalova in dotnet/msbuild#12795
* Enable localization for vs17.14 build by @​YuliiaKovalova in
dotnet/msbuild#12799
* [vs17.8] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12814
* [vs17.14] Add test summary always in terminal logger by @​nohwnd in
dotnet/msbuild#12852
* [vs18.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12575
* [vs17.8] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12889
* [vs17.12] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12892
* [vs17.14] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12891
* Localized file check-in by OneLocBuild Task: Build definition ID 9434:
Build ID 12921813 by @​dotnet-bot in
dotnet/msbuild#12897
* Disable Localization for vs17.14 by @​YuliiaKovalova in
dotnet/msbuild#12903
* [automated] Merge branch 'vs16.11' => 'vs17.8' by
@​github-actions[bot] in dotnet/msbuild#12798
* [vs17.11] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12815
* [automated] Merge branch 'vs17.14' => 'vs18.0' by
@​github-actions[bot] in dotnet/msbuild#12917
* [vs17.8] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12934
* [vs17.11] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12935
* [vs17.12] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12941
* [vs17.14] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12940
* [vs18.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12939
* [vs17.12] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12966
* [vs17.14] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12965
* [vs18.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#12964
* [vs17.12] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13038
* [vs18.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13049
* [vs18.0] Fix MSB1025 error when using DistributedFileLogger (-dfl
flag) by @​github-actions[bot] in
dotnet/msbuild#13039
* [vs17.14] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13037
* [automated] Merge branch 'vs18.0' => 'vs18.3' by @​github-actions[bot]
in dotnet/msbuild#13052
* [vs17.12] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13101
* [vs18.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13098
* [vs17.14] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13100
* [vs18.3] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13102
* Backflow 10.0.2xx VMR by @​dkurepa in
dotnet/msbuild#13121
* Disable localization for vs18.0 in build configuration by
@​YuliiaKovalova in dotnet/msbuild#13164
* Disable localization for vs18.3 by @​YuliiaKovalova in
dotnet/msbuild#13165
* [vs18.3] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13161
* [vs18.3] Stabilize package versions by @​JanProvaznik in
dotnet/msbuild#13233
* [vs18.3] Add Managed Identity for bootstrapper creation by
@​github-actions[bot] in dotnet/msbuild#13249
* [automated] Merge branch 'vs18.0' => 'vs18.3' by @​github-actions[bot]
in dotnet/msbuild#13167
* [vs18.3] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13228
* [vs18.0] Update dependencies from dotnet/arcade by
@​dotnet-maestro[bot] in dotnet/msbuild#13159
 ... (truncated)

## 18.7.1

## What's Changed
* Fix TraceEngine file contention deadlock in multithreaded mode by
@​JanProvaznik in dotnet/msbuild#13446
* Remove duplicate test cases in MultithreadableTaskAnalyzer by
@​Youssef1313 in dotnet/msbuild#13483
* Ensure ThreadSafeTaskAnalyzer.Tests is considered as a unit test
project by @​Youssef1313 in dotnet/msbuild#13481
* Fix MSBuildTask0002 analyzer warnings in already-migrated tasks by
@​JanProvaznik in dotnet/msbuild#13466
* Fix race conditions in task host path resolution by @​AR-May in
dotnet/msbuild#13485
* Migrate ToolTask and Al task to TaskEnvironment API by @​OvesN in
dotnet/msbuild#13423
* Bump main to 18.7, add vs18.6 to merge flow by @​MichalPavlik in
dotnet/msbuild#13472
* Avoid allocations in GetHashCode implementations by @​DustinCampbell
in dotnet/msbuild#13475
* Add PATs rotation to agentic workflow(s) by @​JanKrivanek in
dotnet/msbuild#13496
* Fix ASP.NET WebSite projects to copy netstandard.dll facade when
required by @​JanProvaznik in
dotnet/msbuild#13058
* Migrate AspNetCompiler to TaskEnvironment API by @​OvesN in
dotnet/msbuild#13424
* Add review workflow by @​JanKrivanek in
dotnet/msbuild#13503
* Strengthen reviewer skill: add step-back analysis dimensions by
@​JanProvaznik in dotnet/msbuild#13504
* Add 'Request Speedometer Perf Run' to VS experimental insertion build
policies by @​Copilot in dotnet/msbuild#13505
* Remove duplicate @ prefix from issueAuthor in GitOps by @​akoeplinger
in dotnet/msbuild#13492
* Improve review aw by @​JanKrivanek in
dotnet/msbuild#13510
* Migrates unit tests to use RoslynCodeTaskFactory to enable running
tests under .NET Core by @​jankratochvilcz in
dotnet/msbuild#13500
* Fix cross-AppDomain TaskItem modifier cache regression by
@​DustinCampbell in dotnet/msbuild#13493
* Discourage review agent from approving PRs by @​JanKrivanek in
dotnet/msbuild#13512
* Stop trying to deploy ValueTuple by @​rainersigwald in
dotnet/msbuild#13507
* Ad-hoc re-sign bootstrap dotnet on macOS to prevent SIGKILL by
@​jankratochvilcz in dotnet/msbuild#13513
* RoslynCodeTaskFactory: Log MSB3753 when task class does not implement
ITask by @​jankratochvilcz in
dotnet/msbuild#13517
* Update gh-aw (upon mcp policy changes) by @​JanKrivanek in
dotnet/msbuild#13526
* Eliminate XmlChildNodes allocations in GetXmlNodeInnerContents by
@​nareshjo in dotnet/msbuild#13509
* Fix telemetry allocation regression: per-engine collector ownership by
@​JanProvaznik in dotnet/msbuild#13516
* Migrate to xunit.v3 by @​Youssef1313 in
dotnet/msbuild#13482
* Fix stray brace in HandleBuildCancel trace string causing MSB1025 by
@​Copilot in dotnet/msbuild#13535
* Bumping to 10.0.4 runtime packages by @​MichalPavlik in
dotnet/msbuild#13533
* Remove early return in GetCanonicalForm, always call System.IO.Path by
@​OvesN in dotnet/msbuild#13532
* Do not overwrite GetCopyToOutputDirectoryItemsDependsOn, just add new…
by @​snechaev in dotnet/msbuild#13474
* Migrate GetReferenceAssemblyPaths task to TaskEnvironment API by
@​OvesN in dotnet/msbuild#13495
* Stabilize ToolTaskThatTimeoutAndRetry test by @​rainersigwald in
dotnet/msbuild#13489
* [automated] Merge branch 'vs18.6' => 'main' by @​github-actions[bot]
in dotnet/msbuild#13506
* Add extra test assertions around tests by @​Youssef1313 in
dotnet/msbuild#13536
* Add static eval for repo skills/agents via skill-validator by
@​JanKrivanek in dotnet/msbuild#13537
* Migrate SGen task to Task environment API by @​OvesN in
dotnet/msbuild#13457
* Fix TerminalLogger assert failure for metaproj files and cached
project eval ID by @​OvesN in
dotnet/msbuild#13480
* Filter out approving review from pr-reviewer agent by @​JanKrivanek in
dotnet/msbuild#13553
* Use a unique task name per invocation to tabilize
RoslynCodeTaskFactory_ReuseCompilation test by @​huulinhnguyen-dev in
dotnet/msbuild#13551
* Brief doc on feedback/logging/data systems by @​rainersigwald in
dotnet/msbuild#13554
* Localized file check-in by OneLocBuild Task: Build definition ID 9434:
Build ID 13881982 by @​dotnet-bot in
dotnet/msbuild#13437
* Stage 3: Forward BuildProjectFile* callbacks from OOP TaskHost to
worker node by @​JanProvaznik in
dotnet/msbuild#13350
* Enable TaskHost Callbacks by default by @​JanProvaznik in
dotnet/msbuild#13579
* Remove unactionable info from reviewer agent by @​JanKrivanek in
dotnet/msbuild#13578
* Enlighten RequiresFramework35SP1Assembly task for multithreaded mode
by @​jankratochvilcz in dotnet/msbuild#13575
* Make SdkResolver-provided environment variables take precedence over
ambient environment by @​Copilot in
dotnet/msbuild#12655
* Add dotnet/skills marketplace and enable plugins by @​Evangelink in
dotnet/msbuild#13582
* The skills/agents check filters-in only touched files by @​JanKrivanek
in dotnet/msbuild#13586
* Fix skill-validation workflow failing when agents directory is deleted
by @​JeremyKuhne in dotnet/msbuild#13592
 ... (truncated)

Commits viewable in [compare
view](dotnet/msbuild@v18.6.3...v18.8.2).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Microsoft.Build.Utilities.Core&package-manager=nuget&previous-version=18.6.3&new-version=18.8.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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.

Migrate SGen Task to TaskEnvironment API

4 participants