Skip to content

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

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

[automated] Merge branch 'main' => 'release/dnup'#55052
github-actions[bot] wants to merge 57 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:

  • joeloff
  • jjonescz
  • Evangelink
  • AlesProkop
  • dsplaisted
  • github-actions[bot]
  • SimonZhao888
  • nagilson
  • Copilot
  • dotnet-maestro[bot]
  • mthalman
  • dotnet-bot
  • marcpopMSFT

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.

dotnet-maestro Bot and others added 30 commits June 10, 2026 12:37
Updated Dependencies:
Microsoft.AspNetCore.Mvc.Razor.Extensions.Tooling.Internal, Microsoft.CodeAnalysis.Razor.Tooling.Internal, Microsoft.NET.Sdk.Razor.SourceGenerators.Transport (Version 10.4.0-preview.26278.109 -> 10.4.0-preview.26310.101)
Microsoft.Build, Microsoft.Build.Localization (Version 18.9.0-preview-26278-109 -> 18.9.0-preview-26310-101)
Microsoft.Build.NuGetSdkResolver, NuGet.Build.Tasks, NuGet.Build.Tasks.Console, NuGet.Build.Tasks.Pack, NuGet.CommandLine.XPlat, NuGet.Commands, NuGet.Common, NuGet.Configuration, NuGet.Credentials, NuGet.DependencyResolver.Core, NuGet.Frameworks, NuGet.LibraryModel, NuGet.Localization, NuGet.Packaging, NuGet.ProjectModel, NuGet.Protocol, NuGet.Versioning (Version 7.8.0-rc.27909 -> 7.9.0-rc.31101)
Microsoft.Build.Tasks.Git, Microsoft.SourceLink.AzureRepos.Git, Microsoft.SourceLink.Bitbucket.Git, Microsoft.SourceLink.Common, Microsoft.SourceLink.GitHub, Microsoft.SourceLink.GitLab (Version 10.0.400-alpha.26278.109 -> 10.0.400-alpha.26310.101)
Microsoft.CodeAnalysis, Microsoft.CodeAnalysis.BuildClient, Microsoft.CodeAnalysis.CSharp, Microsoft.CodeAnalysis.CSharp.CodeStyle, Microsoft.CodeAnalysis.CSharp.Features, Microsoft.CodeAnalysis.CSharp.Workspaces, Microsoft.CodeAnalysis.ExternalAccess.HotReload, Microsoft.CodeAnalysis.PublicApiAnalyzers, Microsoft.CodeAnalysis.Workspaces.Common, Microsoft.CodeAnalysis.Workspaces.MSBuild, Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost, Microsoft.Net.Compilers.Toolset, Microsoft.Net.Compilers.Toolset.Framework (Version 5.9.0-1.26278.109 -> 5.9.0-1.26310.101)
Microsoft.DotNet.Arcade.Sdk, Microsoft.DotNet.Build.Tasks.Installers, Microsoft.DotNet.Build.Tasks.Templating, Microsoft.DotNet.Build.Tasks.Workloads, Microsoft.DotNet.Helix.Sdk, Microsoft.DotNet.SignTool, Microsoft.DotNet.XliffTasks, Microsoft.DotNet.XUnitExtensions (Version 10.0.0-beta.26278.109 -> 10.0.0-beta.26310.101)
Microsoft.FSharp.Compiler (Version 15.2.400-servicing.26278.109 -> 15.2.400-servicing.26310.101)
Microsoft.NET.Test.Sdk, Microsoft.TestPlatform.Build, Microsoft.TestPlatform.CLI (Version 18.7.0-release-26278-109 -> 18.7.0-release-26310-101)
Microsoft.TemplateEngine.Abstractions, Microsoft.TemplateEngine.Authoring.TemplateVerifier, Microsoft.TemplateEngine.Edge, Microsoft.TemplateEngine.Mocks, Microsoft.TemplateEngine.Orchestrator.RunnableProjects, Microsoft.TemplateEngine.TestHelper, Microsoft.TemplateEngine.Utils, Microsoft.TemplateSearch.Common, Microsoft.TemplateSearch.TemplateDiscovery (Version 10.0.400-preview.26278.109 -> 10.0.400-preview.26310.101)
[[ commit created by automation ]]
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reset patterns:
- global.json
- NuGet.config
- eng/Version.Details.xml
- eng/Version.Details.props
- eng/common/*
Cherry-picked from #54718.
The newer TestPlatform.CLI (18.7.0-release-26310-101) has a System.Collections.Immutable
binding redirect mismatch that causes FullFramework test host crashes.
Same fix as applied on release/10.0.3xx (sdk#54506).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Marc Paine <marcpop@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: DonnaChen888 <v-donnachen@microsoft.com>
Co-authored-by: Noah Gilson <noahgilson@microsoft.com>
Reset patterns:
- global.json
- NuGet.config
- eng/Version.Details.xml
- eng/Version.Details.props
- eng/common/*
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The migrated Verify approval tests call the static VerifyMSTest.Verifier.Verify(...)
which reads the test context from Verifier.CurrentTestContext. Nothing was wiring
that AsyncLocal because no [UsesVerify] marker was present, so the Verify.MSTest
source generator never emitted the TestContext property setter that captures it,
causing 'TestContext is null' at runtime.

Mark BaseIntegrationTest with [UsesVerify] (and make it partial) so the generator
emits a sealed override TestContext on it (inherited by every Verify-using test
class), and make SdkTest.TestContext virtual so that override is legal.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ease/10.0.3xx-to-release/10.0.4xx

# Conflicts:
#	Directory.Build.props
#	eng/Versions.props

Co-authored-by: SimonZhao888 <133954995+SimonZhao888@users.noreply.github.com>
Co-authored-by: Sam Sandri <samuelsandri@gmail.com>
)

Don't let dotnet CLI disable MSBUILDUSESERVER when DOTNET_CLI_USE_MSBUILD_SERVER is unset

Previously the CLI unconditionally wrote MSBUILDUSESERVER to "1" or "0" based solely on DOTNET_CLI_USE_MSBUILD_SERVER. When that variable was unset (the default), the host wrote MSBUILDUSESERVER=0, clobbering any value the user had set directly via MSBUILDUSESERVER and forcing the MSBuild server off.

Now the CLI only sets MSBUILDUSESERVER=1 when DOTNET_CLI_USE_MSBUILD_SERVER opts in, and otherwise leaves the variable untouched. This lets either variable toggle the MSBuild server on, so a user-provided MSBUILDUSESERVER=1 is honored.

Co-authored-by: AR-May <67507805+AR-May@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
# Conflicts:
#	test/Microsoft.NET.TestFramework.MSTest/SdkTest.cs
MSTest (via the recent testfx bump) now ships its own ArchitectureConditionAttribute, which collides with Microsoft.NET.TestFramework.ArchitectureConditionAttribute and caused CS0104 in TemplateDiscoveryTests. Fully-qualify the attribute to the TestFramework one to preserve existing process-architecture gating behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Amaury Levé and others added 27 commits June 23, 2026 14:26
The testfx bump (#54765) elevated MSTEST0071 to an error under MSTestAnalysisMode=Recommended, breaking main: the dotnet.Tests New post-action tests set [TestMethod(DisplayName = nameof(Method))], which MSTEST0071 flags as redundant. Drop the DisplayName so the display name defaults to the method name.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The VMR codeflow into release/10.0.4xx removes the repo-local Skip on the MauiBlazor
HotReload test, but #54150 (HotReload tests should not use stage 2 SDK) is still open
and the skip is deliberately maintained on the servicing branch. Re-apply it after the
merge, matching the existing 4xx decision.

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

The dotnet-new.IntegrationTests snapshot tests failed under MSTest/MTP with
'System.Exception: TestContext.TestMethod is null' because TemplateVerifier's
VerificationEngine always called VerifyXunit.Verifier.VerifyDirectory, which
resolves the test method from xUnit's ambient context (unavailable under MSTest).

- Add an injectable VerificationEngine.DirectoryVerifier hook (defaults to the
  xUnit verifier, isolated so Verify.XunitV3 is only loaded when used).
- dotnet-new.IntegrationTests sets the hook to VerifyMSTest.Verifier.VerifyDirectory
  via a module initializer; the Verify.MSTest [UsesVerify] generator captures the
  MSTest TestContext, so the directory verifier resolves the active test.
- Fix FileRenameTests: Assert.MatchesRegex takes (pattern, value); the migration
  had the arguments swapped.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The xUnit->MSTest migration converted Assert.True(lastUpdateDate < File.GetLastWriteTimeUtc(cacheFilePath)) to Assert.IsLessThan(lastUpdateDate, File.GetLastWriteTimeUtc(cacheFilePath)). MSTest's Assert.IsLessThan(upperBound, value) asserts �alue < upperBound, which inverts the original intent and fails on all platforms because the cache file is (correctly) rewritten after lastUpdateDate. Use Assert.IsGreaterThan(lastUpdateDate, ...) so it asserts the file write time is greater than lastUpdateDate.

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

# Conflicts:
#	src/TemplateEngine/Tools/Microsoft.TemplateEngine.Authoring.TemplateVerifier/VerificationEngine.cs
Reset patterns:
- global.json
- NuGet.config
- eng/Version.Details.xml
- eng/Version.Details.props
- eng/common/*
The Verify adapters (VerifyMSTest/VerifyXunit Verifier.VerifyDirectory) return SettingsTask, which is a VerifyTests class that does not derive from Task. Method-group-to-delegate conversion requires return-type identity/covariance, so assigning these method groups to a Task-returning delegate failed with CS0407. Align the delegate and DefaultVerifyDirectory return types with SettingsTask (matching main's prior field type).

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

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

The dotnet CLI writes UTF-8 to stdout. The test framework decodes captured child-process output using Console.OutputEncoding when no explicit StandardOutputEncoding is set. The old xUnit/VSTest host ran with a UTF-8 console; the Microsoft.Testing.Platform .NET host does not, so localized German output was decoded with the OEM code page (CP850) and corrupted, failing the SkipsLocalizationOnInstantiate_* assertions. Set Console.OutputEncoding to UTF-8 in the module initializer to restore correct decoding. Verified by experiment that CP850 reproduces the exact mojibake and UTF-8 fixes it.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Resolve the 27 codeflow merge conflicts between release/10.0.4xx and main:

- Dependency files: take main's newer MSTest.Sdk + VersionFeature100.
- Workload elevate (security): combine 4xx's --client-temp path-validation
  feature with main's refactors (inverted Windows guard + #if TARGET_WINDOWS;
  System.Text.Json source-gen in MsiPackageCache reading the validated
  fullManifestPath; Environment.ProcessPath null-check passing --client-temp).
- Logger arguments: LoggerUtility keeps the union of both APIs
  (main's IsTerminalLoggerArgument + 4xx's SeparateLoggerArguments/parser),
  since the merged tree has callers of both; DotNetCommandFactory keeps main's
  RuntimeFeature.IsDynamicCodeSupported guard using 4xx's loggerArgs.
- OverlaySdkOnLKG.targets: take main's DotNetTool property casing.
- Localization: resolve the 13 CliCommandStrings.*.xlf and regenerate via
  /t:UpdateXlf (new logger strings marked state=new for translation).
- Tests: resolve across the xUnit->MSTest migration. Port 4xx's new logger
  tests into MSTest. In RunFileTests_General, ExtraArgWithFileEntryPoint_Warns
  keeps 4xx's signature/rows because the merged logger feature makes
  -consoleLoggerParameters a recognized arg (main's row would now fail).

Files that git auto-merged without conflict but did not compile together
(InstallerBase nullable, WindowsInstallerTests xUnit/MSTest mix, and stray
xUnit leftovers in RunFileTests_General) are fixed in the follow-up commit.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
These files were auto-merged by git without conflict markers, but the
combination did not compile and required manual fixes:

- InstallerBase.cs: TrustedClientTempDirectory (added by 4xx) is non-nullable
  but uninitialized, which is CS8618 under main's <Nullable>enable</Nullable>.
  Make it 'string?' (matches its own doc-comment "null if not supplied").

- WindowsInstallerTests.cs: both branches modified this file; the text-merge
  interleaved main's MSTest tests with 4xx's xUnit security tests into one
  uncompilable file. Convert the 4xx constructs to MSTest
  ([WindowsOnlyFact/Theory] -> [TestMethod] + [OSCondition(Windows)],
  [InlineData] -> [DataRow], xUnit Assert.* -> MSTest Assert.*). The xUnit
  predicate-form Assert.DoesNotContain has no MSTest overload, so it is
  rewritten as a local bool + Assert.IsFalse (avoids analyzer MSTEST0037).

- RunFileTests_General.cs: two tests in clean-merged regions still used xUnit
  [Fact] and the instance _testAssetsManager; convert to [TestMethod] and the
  static TestAssetsManager used elsewhere in the (now MSTest) file.

After this commit, src/Cli/dotnet/dotnet.csproj and
test/dotnet.Tests/dotnet.Tests.csproj both build with 0 warnings / 0 errors.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The merge kept 4xx's unconditional 'using Microsoft.DotNet.Cli.Installer.Windows;'
(4xx used a runtime OperatingSystem.IsWindows() check, so its Installer.Windows
code compiled on all platforms). main instead guards that code with
#if TARGET_WINDOWS and the Installer.Windows namespace is excluded on non-Windows
builds. Since InstallerBase is only referenced inside #if TARGET_WINDOWS, wrap the
using in the same guard so non-Windows (linux/macOS/AoT) builds don't fail with
CS0234. Validated with a TargetOS=linux compile.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reset patterns:
- global.json
- NuGet.config
- eng/Version.Details.xml
- eng/Versions.props
- eng/common/*
- 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.