Skip to content

[automated] Merge branch 'main' => 'release/dnup'#55387

Open
github-actions[bot] wants to merge 12 commits into
release/dnupfrom
merge/main-to-release/dnup
Open

[automated] Merge branch 'main' => 'release/dnup'#55387
github-actions[bot] wants to merge 12 commits into
release/dnupfrom
merge/main-to-release/dnup

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

I detected changes in the main branch which have not been merged yet to release/dnup. I'm a robot and am configured to help you automatically keep release/dnup up to date, so I've opened this PR.

This PR merges commits made on main by the following committers:

  • jithu7432
  • baronfel
  • Evangelink

Instructions for merging from UI

This PR will not be auto-merged. When pull request checks pass, complete this PR by creating a merge commit, not a squash or rebase commit.

merge button instructions

If this repo does not allow creating merge commits from the GitHub UI, use command line instructions.

Instructions for merging via command line

Run these commands to merge this pull request from the command line.

git fetch
git checkout main
git pull --ff-only
git checkout release/dnup
git pull --ff-only
git merge --no-ff main

# If there are merge conflicts, resolve them and then run git merge --continue to complete the merge
# Pushing the changes to the PR branch will re-trigger PR validation.
git push https://github.com/dotnet/sdk HEAD:merge/main-to-release/dnup
or if you are using SSH
git push git@github.com:dotnet/sdk HEAD:merge/main-to-release/dnup

After PR checks are complete push the branch

git push

Instructions for resolving conflicts

⚠️ If there are merge conflicts, you will need to resolve them manually before merging. You can do this using GitHub or using the command line.

Instructions for updating this pull request

Contributors to this repo have permission update this pull request by pushing to the branch 'merge/main-to-release/dnup'. This can be done to resolve conflicts or make other changes to this pull request before it is merged.
The provided examples assume that the remote is named 'origin'. If you have a different remote name, please replace 'origin' with the name of your remote.

git fetch
git checkout -b merge/main-to-release/dnup origin/release/dnup
git pull https://github.com/dotnet/sdk merge/main-to-release/dnup
(make changes)
git commit -m "Updated PR with my changes"
git push https://github.com/dotnet/sdk HEAD:merge/main-to-release/dnup
or if you are using SSH
git fetch
git checkout -b merge/main-to-release/dnup origin/release/dnup
git pull git@github.com:dotnet/sdk merge/main-to-release/dnup
(make changes)
git commit -m "Updated PR with my changes"
git push git@github.com:dotnet/sdk HEAD:merge/main-to-release/dnup

Contact .NET Core Engineering (dotnet/dnceng) if you have questions or issues.
Also, if this PR was generated incorrectly, help us fix it. See https://github.com/dotnet/arcade/blob/main/.github/workflows/scripts/inter-branch-merge.ps1.

Evangelink and others added 12 commits July 14, 2026 16:21
TestAsset.WithSource applied ~14 property/package-version substitutions by
calling UpdateProjProperty/ReplacePackageVersionVariable in a loop, each of
which reloaded and rewrote every project file in the asset. That meant ~14
XDocument load+save round-trips per project file during the setup of every
test that calls WithSource (the standard setup path for hundreds of SDK
integration tests).

Extract the per-document mutation bodies into private static helpers and apply
all substitutions in one WithProjectChanges pass, so each project file is
loaded and saved once. Behavior is unchanged: verified byte-identical output
across all 352 test-asset csproj files.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: a22eead4-88ca-4142-a6d8-a7199db73289
WithSource copied every source file to the destination and then, in the
substitution pass, reloaded and re-saved each project/.xml file with the
target-framework, runtime-identifier, and package-version substitutions
applied. That meant every project file was written twice: once by File.Copy
and again by the substitution save that immediately overwrote it.

Skip the File.Copy for files that the substitution pass rewrites; instead load
those directly from the source and write the substituted result straight to the
destination once. Non-project files are still copied verbatim.

Because File.Copy is an exact byte copy, loading from the source is equivalent
to loading from the copied destination, so output is unchanged: verified
byte-identical across all 257 test assets (1439 files, 0 differences) while
eliminating 404 redundant writes (~22% of WithSource's file writes).

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: a22eead4-88ca-4142-a6d8-a7199db73289
Address review feedback: use OfType<XAttribute>() to filter out null
attributes returned by the LINQ chain instead of a redundant inner null-check.
Behavior is unchanged.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: a22eead4-88ca-4142-a6d8-a7199db73289
Acknowledge the reviewed testfx terminal reporter and wire-contract drift without porting testfx-only structured progress or logging abstractions.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 7e20f449-2997-4207-9a29-265519e73fd3
Qualify the dotnet test exit-code constants after the shared test framework introduced a conflicting ExitCode type.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 7e20f449-2997-4207-9a29-265519e73fd3
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Reset patterns:
- CODEOWNERS
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.

3 participants