Skip to content

[automated] Merge branch 'vs18.7' => 'vs18.8' - #14286

Merged
AlesProkop merged 37 commits into
vs18.8from
merge/vs18.7-to-vs18.8
Jul 8, 2026
Merged

[automated] Merge branch 'vs18.7' => 'vs18.8'#14286
AlesProkop merged 37 commits into
vs18.8from
merge/vs18.7-to-vs18.8

Conversation

@github-actions

@github-actions github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

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

This PR merges commits made on vs18.7 by the following committers:

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 vs18.7
git pull --ff-only
git checkout vs18.8
git pull --ff-only
git merge --no-ff vs18.7

# 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/msbuild HEAD:merge/vs18.7-to-vs18.8
or if you are using SSH
git push git@github.com:dotnet/msbuild HEAD:merge/vs18.7-to-vs18.8

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/vs18.7-to-vs18.8'. 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/vs18.7-to-vs18.8 origin/vs18.8
git pull https://github.com/dotnet/msbuild merge/vs18.7-to-vs18.8
(make changes)
git commit -m "Updated PR with my changes"
git push https://github.com/dotnet/msbuild HEAD:merge/vs18.7-to-vs18.8
or if you are using SSH
git fetch
git checkout -b merge/vs18.7-to-vs18.8 origin/vs18.8
git pull git@github.com:dotnet/msbuild merge/vs18.7-to-vs18.8
(make changes)
git commit -m "Updated PR with my changes"
git push git@github.com:dotnet/msbuild HEAD:merge/vs18.7-to-vs18.8

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 May 20, 2026 17:29
This pull request updates the following dependencies

[marker]: <> (Begin:8b822e25-6fe2-4f64-8b53-1ba32cac78e4)
## From https://github.com/dotnet/arcade
- **Subscription**:
[8b822e25-6fe2-4f64-8b53-1ba32cac78e4](https://maestro.dot.net/subscriptions?search=8b822e25-6fe2-4f64-8b53-1ba32cac78e4)
- **Build**:
[20260507.4](https://dev.azure.com/dnceng/internal/_build/results?buildId=2969534)
([313474](https://maestro.dot.net/channel/8394/github:dotnet:arcade/build/313474))
- **Date Produced**: May 7, 2026 2:49:53 PM UTC
- **Commit**:
[3454b2fe822e52373f2604856417b0e6bce71d70](dotnet/arcade@3454b2f)
- **Branch**:
[release/10.0](https://github.com/dotnet/arcade/tree/release/10.0)

[DependencyUpdate]: <> (Begin)

- **Dependency Updates**:
  - From [10.0.0-beta.26164.1 to 10.0.0-beta.26257.4][1]
     - Microsoft.DotNet.Arcade.Sdk
     - Microsoft.DotNet.XUnitExtensions

[1]: dotnet/arcade@e365cfc...3454b2f

[DependencyUpdate]: <> (End)

- **Updates to .NET SDKs:**
  - Updates **tools.dotnet** to 10.0.107

[marker]: <> (End:8b822e25-6fe2-4f64-8b53-1ba32cac78e4)

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Nguyen Huu Linh <huulinhnguyen99@gmail.com>
Co-authored-by: Gang Wang <v-gaw@microsoft.com>
This pull request updates the following dependencies

[marker]: <> (Begin:36ae1796-1371-4d85-8c50-69153b9e67d7)
## From https://github.com/dotnet/arcade
- **Subscription**:
[36ae1796-1371-4d85-8c50-69153b9e67d7](https://maestro.dot.net/subscriptions?search=36ae1796-1371-4d85-8c50-69153b9e67d7)
- **Build**:
[20260519.10](https://dev.azure.com/dnceng/internal/_build/results?buildId=2978939)
([315004](https://maestro.dot.net/channel/8394/github:dotnet:arcade/build/315004))
- **Date Produced**: May 19, 2026 3:48:38 PM UTC
- **Commit**:
[ef50e01056369b217663cac33386645a296ef53d](dotnet/arcade@ef50e01)
- **Branch**:
[release/10.0](https://github.com/dotnet/arcade/tree/release/10.0)

[DependencyUpdate]: <> (Begin)

- **Dependency Updates**:
  - From [10.0.0-beta.26257.4 to 10.0.0-beta.26269.10][1]
     - Microsoft.DotNet.Arcade.Sdk
     - Microsoft.DotNet.XUnitExtensions

[1]: dotnet/arcade@3454b2f...ef50e01

[DependencyUpdate]: <> (End)


[marker]: <> (End:36ae1796-1371-4d85-8c50-69153b9e67d7)

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Gang Wang (BEYONDSOFT CONSULTING INC) <v-gaw@microsoft.com>
This pull request updates the following dependencies

[marker]: <> (Begin:8b822e25-6fe2-4f64-8b53-1ba32cac78e4)
## From https://github.com/dotnet/arcade
- **Subscription**:
[8b822e25-6fe2-4f64-8b53-1ba32cac78e4](https://maestro.dot.net/subscriptions?search=8b822e25-6fe2-4f64-8b53-1ba32cac78e4)
- **Build**:
[20260519.10](https://dev.azure.com/dnceng/internal/_build/results?buildId=2978939)
([315004](https://maestro.dot.net/channel/8394/github:dotnet:arcade/build/315004))
- **Date Produced**: May 19, 2026 3:48:38 PM UTC
- **Commit**:
[ef50e01056369b217663cac33386645a296ef53d](dotnet/arcade@ef50e01)
- **Branch**:
[release/10.0](https://github.com/dotnet/arcade/tree/release/10.0)

[DependencyUpdate]: <> (Begin)

- **Dependency Updates**:
  - From [10.0.0-beta.26257.4 to 10.0.0-beta.26269.10][1]
     - Microsoft.DotNet.Arcade.Sdk
     - Microsoft.DotNet.XUnitExtensions

[1]: dotnet/arcade@3454b2f...ef50e01

[DependencyUpdate]: <> (End)


[marker]: <> (End:8b822e25-6fe2-4f64-8b53-1ba32cac78e4)

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Gang Wang (BEYONDSOFT CONSULTING INC) <v-gaw@microsoft.com>
This pull request updates the following dependencies

[marker]: <> (Begin:0d0c31fc-ed95-4201-b312-fa81f93928bb)
## From https://github.com/dotnet/arcade
- **Subscription**:
[0d0c31fc-ed95-4201-b312-fa81f93928bb](https://maestro.dot.net/subscriptions?search=0d0c31fc-ed95-4201-b312-fa81f93928bb)
- **Build**:
[20260519.10](https://dev.azure.com/dnceng/internal/_build/results?buildId=2978939)
([315004](https://maestro.dot.net/channel/8394/github:dotnet:arcade/build/315004))
- **Date Produced**: May 19, 2026 3:48:38 PM UTC
- **Commit**:
[ef50e01056369b217663cac33386645a296ef53d](dotnet/arcade@ef50e01)
- **Branch**:
[release/10.0](https://github.com/dotnet/arcade/tree/release/10.0)

[DependencyUpdate]: <> (Begin)

- **Dependency Updates**:
  - From [10.0.0-beta.26257.4 to 10.0.0-beta.26269.10][1]
     - Microsoft.DotNet.Arcade.Sdk
     - Microsoft.DotNet.XUnitV3Extensions

[1]: dotnet/arcade@3454b2f...ef50e01

[DependencyUpdate]: <> (End)


[marker]: <> (End:0d0c31fc-ed95-4201-b312-fa81f93928bb)

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Gang Wang (BEYONDSOFT CONSULTING INC) <v-gaw@microsoft.com>
This pull request updates the following dependencies

[marker]: <> (Begin:15388ba0-faaf-4906-bba2-a9b719e812a4)
## From https://github.com/dotnet/arcade
- **Subscription**:
[15388ba0-faaf-4906-bba2-a9b719e812a4](https://maestro.dot.net/subscriptions?search=15388ba0-faaf-4906-bba2-a9b719e812a4)
- **Build**:
[20260528.4](https://dev.azure.com/dnceng/internal/_build/results?buildId=2986526)
([316238](https://maestro.dot.net/channel/5175/github:dotnet:arcade/build/316238))
- **Date Produced**: May 28, 2026 9:22:26 PM UTC
- **Commit**:
[9cf79e2a2ecf95c9b2aa6a321baaea009753e356](dotnet/arcade@9cf79e2)
- **Branch**:
[release/9.0](https://github.com/dotnet/arcade/tree/release/9.0)

[DependencyUpdate]: <> (Begin)

- **Dependency Updates**:
  - From [9.0.0-beta.26261.1 to 9.0.0-beta.26278.4][1]
     - Microsoft.SourceBuild.Intermediate.arcade
     - Microsoft.DotNet.Arcade.Sdk
     - Microsoft.DotNet.XliffTasks
     - Microsoft.DotNet.XUnitExtensions

[1]: dotnet/arcade@6c1a2a6...9cf79e2

[DependencyUpdate]: <> (End)


[marker]: <> (End:15388ba0-faaf-4906-bba2-a9b719e812a4)

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Gang Wang <v-gaw@microsoft.com>
This pull request updates the following dependencies

[marker]: <> (Begin:36ae1796-1371-4d85-8c50-69153b9e67d7)
## From https://github.com/dotnet/arcade
- **Subscription**:
[36ae1796-1371-4d85-8c50-69153b9e67d7](https://maestro.dot.net/subscriptions?search=36ae1796-1371-4d85-8c50-69153b9e67d7)
- **Build**:
[20260528.2](https://dev.azure.com/dnceng/internal/_build/results?buildId=2986522)
([316237](https://maestro.dot.net/channel/8394/github:dotnet:arcade/build/316237))
- **Date Produced**: May 28, 2026 9:11:55 PM UTC
- **Commit**:
[a7bf38d04c8247b059c688f5448dc556e0cd6bb5](dotnet/arcade@a7bf38d)
- **Branch**:
[release/10.0](https://github.com/dotnet/arcade/tree/release/10.0)

[DependencyUpdate]: <> (Begin)

- **Dependency Updates**:
  - From [10.0.0-beta.26269.10 to 10.0.0-beta.26278.2][1]
     - Microsoft.DotNet.Arcade.Sdk
     - Microsoft.DotNet.XUnitExtensions

[1]: dotnet/arcade@ef50e01...a7bf38d

[DependencyUpdate]: <> (End)

- **Updates to .NET SDKs:**
  - Updates **tools.dotnet** to 10.0.108

[marker]: <> (End:36ae1796-1371-4d85-8c50-69153b9e67d7)

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Gang Wang (BEYONDSOFT CONSULTING INC) <v-gaw@microsoft.com>
This pull request updates the following dependencies

[marker]: <> (Begin:8b822e25-6fe2-4f64-8b53-1ba32cac78e4)
## From https://github.com/dotnet/arcade
- **Subscription**:
[8b822e25-6fe2-4f64-8b53-1ba32cac78e4](https://maestro.dot.net/subscriptions?search=8b822e25-6fe2-4f64-8b53-1ba32cac78e4)
- **Build**:
[20260528.2](https://dev.azure.com/dnceng/internal/_build/results?buildId=2986522)
([316237](https://maestro.dot.net/channel/8394/github:dotnet:arcade/build/316237))
- **Date Produced**: May 28, 2026 9:11:55 PM UTC
- **Commit**:
[a7bf38d04c8247b059c688f5448dc556e0cd6bb5](dotnet/arcade@a7bf38d)
- **Branch**:
[release/10.0](https://github.com/dotnet/arcade/tree/release/10.0)

[DependencyUpdate]: <> (Begin)

- **Dependency Updates**:
  - From [10.0.0-beta.26269.10 to 10.0.0-beta.26278.2][1]
     - Microsoft.DotNet.Arcade.Sdk
     - Microsoft.DotNet.XUnitExtensions

[1]: dotnet/arcade@ef50e01...a7bf38d

[DependencyUpdate]: <> (End)

- **Updates to .NET SDKs:**
  - Updates **tools.dotnet** to 10.0.108

[marker]: <> (End:8b822e25-6fe2-4f64-8b53-1ba32cac78e4)

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Gang Wang (BEYONDSOFT CONSULTING INC) <v-gaw@microsoft.com>
This pull request updates the following dependencies

[marker]: <> (Begin:0d0c31fc-ed95-4201-b312-fa81f93928bb)
## From https://github.com/dotnet/arcade
- **Subscription**:
[0d0c31fc-ed95-4201-b312-fa81f93928bb](https://maestro.dot.net/subscriptions?search=0d0c31fc-ed95-4201-b312-fa81f93928bb)
- **Build**:
[20260528.2](https://dev.azure.com/dnceng/internal/_build/results?buildId=2986522)
([316237](https://maestro.dot.net/channel/8394/github:dotnet:arcade/build/316237))
- **Date Produced**: May 28, 2026 9:11:55 PM UTC
- **Commit**:
[a7bf38d04c8247b059c688f5448dc556e0cd6bb5](dotnet/arcade@a7bf38d)
- **Branch**:
[release/10.0](https://github.com/dotnet/arcade/tree/release/10.0)

[DependencyUpdate]: <> (Begin)

- **Dependency Updates**:
  - From [10.0.0-beta.26269.10 to 10.0.0-beta.26278.2][1]
     - Microsoft.DotNet.Arcade.Sdk
     - Microsoft.DotNet.XUnitV3Extensions

[1]: dotnet/arcade@ef50e01...a7bf38d

[DependencyUpdate]: <> (End)

- **Updates to .NET SDKs:**
  - Updates **tools.dotnet** to 10.0.108

[marker]: <> (End:0d0c31fc-ed95-4201-b312-fa81f93928bb)

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Gang Wang (BEYONDSOFT CONSULTING INC) <v-gaw@microsoft.com>
…#13923)

vs18.6 stabilization should train OptProf against the VS channel that
ships matching 18.6 bits, not the moving int.main channel. Training
against int.main causes drift and breaks OptProf collection.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Rainer Sigwald <raines@microsoft.com>
I detected changes in the vs18.6 branch which have not been merged yet
to vs18.7. I'm a robot and am configured to help you automatically keep
vs18.7 up to date, so I've opened this PR.

This PR merges commits made on vs18.6 by the following committers:

* @AlesProkop
* @dotnet-maestro[bot]

## 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.

<img alt="merge button instructions"
src="https://i.imgur.com/GepcNJV.png" width="300" />

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.

``` sh
git fetch
git checkout vs18.6
git pull --ff-only
git checkout vs18.7
git pull --ff-only
git merge --no-ff vs18.6

# 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/msbuild HEAD:merge/vs18.6-to-vs18.7
```

<details>
<summary>or if you are using SSH</summary>

```
git push git@github.com:dotnet/msbuild HEAD:merge/vs18.6-to-vs18.7
```

</details>


After PR checks are complete push the branch
```
git push
```

## Instructions for resolving conflicts

:warning: If there are merge conflicts, you will need to resolve them
manually before merging. You can do this [using GitHub][resolve-github]
or using the [command line][resolve-cli].

[resolve-github]:
https://help.github.com/articles/resolving-a-merge-conflict-on-github/
[resolve-cli]:
https://help.github.com/articles/resolving-a-merge-conflict-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/vs18.6-to-vs18.7'. 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/vs18.6-to-vs18.7 origin/vs18.7
git pull https://github.com/dotnet/msbuild merge/vs18.6-to-vs18.7
(make changes)
git commit -m "Updated PR with my changes"
git push https://github.com/dotnet/msbuild HEAD:merge/vs18.6-to-vs18.7
```

<details>
    <summary>or if you are using SSH</summary>

```
git fetch
git checkout -b merge/vs18.6-to-vs18.7 origin/vs18.7
git pull git@github.com:dotnet/msbuild merge/vs18.6-to-vs18.7
(make changes)
git commit -m "Updated PR with my changes"
git push git@github.com:dotnet/msbuild HEAD:merge/vs18.6-to-vs18.7
```

</details>

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.
This pull request updates the following dependencies

[marker]: <> (Begin:15388ba0-faaf-4906-bba2-a9b719e812a4)
## From https://github.com/dotnet/arcade
- **Subscription**:
[15388ba0-faaf-4906-bba2-a9b719e812a4](https://maestro.dot.net/subscriptions?search=15388ba0-faaf-4906-bba2-a9b719e812a4)
- **Build**:
[20260601.4](https://dev.azure.com/dnceng/internal/_build/results?buildId=2988921)
([316590](https://maestro.dot.net/channel/5175/github:dotnet:arcade/build/316590))
- **Date Produced**: June 1, 2026 8:52:28 AM UTC
- **Commit**:
[efce34e9f9f25af27e2b471fbbf8c21f1ac2e318](dotnet/arcade@efce34e)
- **Branch**:
[release/9.0](https://github.com/dotnet/arcade/tree/release/9.0)

[DependencyUpdate]: <> (Begin)

- **Dependency Updates**:
  - From [9.0.0-beta.26278.4 to 9.0.0-beta.26301.4][1]
     - Microsoft.SourceBuild.Intermediate.arcade
     - Microsoft.DotNet.Arcade.Sdk
     - Microsoft.DotNet.XliffTasks
     - Microsoft.DotNet.XUnitExtensions

[1]: dotnet/arcade@9cf79e2...efce34e

[DependencyUpdate]: <> (End)


[marker]: <> (End:15388ba0-faaf-4906-bba2-a9b719e812a4)

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Nguyen Huu Linh <huulinhnguyen99@gmail.com>
This pull request updates the following dependencies

[marker]: <> (Begin:36ae1796-1371-4d85-8c50-69153b9e67d7)
## From https://github.com/dotnet/arcade
- **Subscription**:
[36ae1796-1371-4d85-8c50-69153b9e67d7](https://maestro.dot.net/subscriptions?search=36ae1796-1371-4d85-8c50-69153b9e67d7)
- **Build**:
[20260604.4](https://dev.azure.com/dnceng/internal/_build/results?buildId=2992260)
([317322](https://maestro.dot.net/channel/8394/github:dotnet:arcade/build/317322))
- **Date Produced**: June 4, 2026 3:11:07 PM UTC
- **Commit**:
[7b306e34463421cef2816352743b943c6547dfab](dotnet/arcade@7b306e3)
- **Branch**:
[release/10.0](https://github.com/dotnet/arcade/tree/release/10.0)

[DependencyUpdate]: <> (Begin)

- **Dependency Updates**:
  - From [10.0.0-beta.26278.2 to 10.0.0-beta.26304.4][1]
     - Microsoft.DotNet.Arcade.Sdk
     - Microsoft.DotNet.XUnitExtensions

[1]: dotnet/arcade@a7bf38d...7b306e3

[DependencyUpdate]: <> (End)


[marker]: <> (End:36ae1796-1371-4d85-8c50-69153b9e67d7)

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Nguyen Huu Linh <huulinhnguyen99@gmail.com>
Co-authored-by: Nguyen Huu Linh <huulinhnguyen99@gmail.com>
…pipe handles (#13351)" (#13945)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The MicroBuildBuildVSBootstrapper task only special-cases 'release'/'preview'
as public channels; any other name (including 'stable') is treated as an
internal channel and requires a vsdrop {prefix};{suffix} installer-manifest
URL. The public 'stable' channel manifest uses a download.visualstudio.microsoft.com
URL with no semicolon, so the task throws "drop url ... is invalid".

'stable' and 'release' resolve to the same public channel manifest
(VisualStudio.18.Release.chman), so this trains the same shipping bits while
fixing the bootstrapper build.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The MicroBuildBuildVSBootstrapper task only special-cases 'release'/'preview'
as public channels; any other name (including 'stable') is treated as an
internal channel and requires a vsdrop {prefix};{suffix} installer-manifest
URL. The public 'stable' channel manifest uses a download.visualstudio.microsoft.com
URL with no semicolon, so the task throws "drop url ... is invalid".

'stable' and 'release' resolve to the same public channel manifest
(VisualStudio.18.Release.chman), so this trains the same shipping bits while
fixing the bootstrapper build.

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

### Problem
PR #13923 changed `VisualStudio.ChannelName` from `int.main` to `stable`
to stop OptProf training against the moving `int.main` channel (which
caused assembly-version drift, e.g. System.Text.Json 10.0.0.4). Since
then the official build fails at **OptProf - Build VS bootstrapper**:

> The drop url
https://download.visualstudio.microsoft.com/.../VisualStudio.vsman is
invalid. Expected the drop url to have the format {prefix};{suffix}

### Root cause
The MicroBuild `MicroBuildBuildVSBootstrapper` task only special-cases
the literal channel names **`release`** and **`preview`** as public
channels. **Any other value — including `stable` — is assumed to be an
*internal* channel** whose installer-manifest URL is a vsdrop drop in
`{prefix};{suffix}` form. The public `stable` channel resolves
(`aka.ms/vs/18/stable/channel`) to `VisualStudio.18.Release.chman`,
whose installer-manifest URL is the public CDN
`download.visualstudio.microsoft.com/.../VisualStudio.vsman` (no
semicolon) -> the task throws.

The relevant task logic (`CreateConfigFile`):
https://dev.azure.com/devdiv/Engineering/_git/MicroBuild?path=/src/Tasks/BuildVSBootstrapper/plugin.ps1&line=286&lineEnd=307&lineStartColumn=1&lineEndColumn=1&lineStyle=plain&_a=contents

### Fix
Use `release` instead of `stable`. Both resolve to the **same** public
channel manifest (`VisualStudio.18.Release.chman`), so OptProf trains
against the identical shipping bits — but `release` is one of the two
special-cased names, so the task uses the aka.ms config template instead
of attempting to parse a vsdrop URL.

No behavioral change to trained bits; this only unblocks the
bootstrapper build.

Companion to #13992 (vs18.6).
…#13992)

### Problem
PR #13923 changed `VisualStudio.ChannelName` from `int.main` to `stable`
to stop OptProf training against the moving `int.main` channel (which
caused assembly-version drift, e.g. System.Text.Json 10.0.0.4). Since
then the official build fails at **OptProf - Build VS bootstrapper**:

> The drop url
https://download.visualstudio.microsoft.com/.../VisualStudio.vsman is
invalid. Expected the drop url to have the format {prefix};{suffix}

### Root cause
The MicroBuild `MicroBuildBuildVSBootstrapper` task only special-cases
the literal channel names **`release`** and **`preview`** as public
channels. **Any other value — including `stable` — is assumed to be an
*internal* channel** whose installer-manifest URL is a vsdrop drop in
`{prefix};{suffix}` form. The public `stable` channel resolves
(`aka.ms/vs/18/stable/channel`) to `VisualStudio.18.Release.chman`,
whose installer-manifest URL is the public CDN
`download.visualstudio.microsoft.com/.../VisualStudio.vsman` (no
semicolon) -> the task throws.

The relevant task logic (`CreateConfigFile`):
https://dev.azure.com/devdiv/Engineering/_git/MicroBuild?path=/src/Tasks/BuildVSBootstrapper/plugin.ps1&line=286&lineEnd=307&lineStartColumn=1&lineEndColumn=1&lineStyle=plain&_a=contents

### Fix
Use `release` instead of `stable`. Both resolve to the **same** public
channel manifest (`VisualStudio.18.Release.chman`), so OptProf trains
against the identical shipping bits — but `release` is one of the two
special-cased names, so the task uses the aka.ms config template instead
of attempting to parse a vsdrop URL.

No behavioral change to trained bits; this only unblocks the
bootstrapper build.

Companion to #13993 (vs18.7).
…ase' (#14005)

### Problem
The previous fix (#13992, `stable` -> `release`) was wrong. On the
official build it fails with:

> ##[error]Invalid JSON primitive: .

because `release` is **not a valid channel moniker for VS 18**.
`https://aka.ms/vs/18/release/channel` bounces to a Bing fallback page,
which the bootstrapper task saves as the `.chman` and then fails to
parse as JSON.

### Why `release` and `stable` are both wrong
The aka.ms moniker convention changed between VS17 and VS18:

| moniker | VS 17 | VS 18 |
| --- | --- | --- |
| `release` | real CDN manifest | bounces to bing.com (broken) |
| `stable` | bounces to bing.com | real **public** CDN manifest
(`VisualStudio.18.Release.chman`) |
| `int.stable` | n/a | **internal vsdrop** manifest
(`VisualStudio.18.int.stable.chman`) |

So for VS 18 the public GA channel is `stable` (not `release`). But the
MicroBuild `MicroBuildBuildVSBootstrapper` task's `CreateConfigFile`
only special-cases the VS17-era public names `release`/`preview`. Any
other name — including `stable` — is routed down the **internal** path,
where it parses the installer-manifest URL as a vsdrop
`{prefix};{suffix}` drop. `stable`'s public CDN URL has no semicolon,
hence the original *"drop url ... is invalid"* failure.

### Fix
Use **`int.stable`**: the **internal, vsdrop-backed** equivalent of
`stable`. It tracks the stable 18.x bits (not the moving `int.main` that
caused the System.Text.Json 10.0.0.4 drift in #13923), and because it is
an internal channel its installer-manifest URL is a vsdrop
`{prefix};{suffix}` URL that `CreateConfigFile` accepts.

- `https://aka.ms/vs/18/int.stable/channel` resolves to
`VisualStudio.18.int.stable.chman` on `vsdrop.microsoft.com` (verified).

Relevant task logic (`CreateConfigFile`):
https://dev.azure.com/devdiv/Engineering/_git/MicroBuild?path=/src/Tasks/BuildVSBootstrapper/plugin.ps1&line=286&lineEnd=307&lineStartColumn=1&lineEndColumn=1&lineStyle=plain&_a=contents



Companion to #14006 (vs18.7).




---

### Local validation (verified before merge)
Replicated every step the `MicroBuildBuildVSBootstrapper` task performs,
using the same VSDrop token audience the task uses (per `plugin.ps1`):

| Check | Result | Failure mode it rules out |
| --- | --- | --- |
| (a) `aka.ms/vs/18/int.stable/channel` redirects to **vsdrop** (not
bing.com) | ✅ | the `release` "Invalid JSON primitive" (Bing fallback
page) |
| (b) `.chman` downloads and is valid JSON (11 channelItems) | ✅ | the
`release` "Invalid JSON primitive" |
| (c) installer-manifest URL splits into `{prefix};{suffix}` (2 parts) |
✅ | the `stable` "drop url ... is invalid" (`CreateConfigFile`
`Split(";")` check) |
| (d) config payload
`…;bootstrappers/Enterprise/configuration/vs_setup_bootstrapper.config`
returns **HTTP 200** (after the corp→ZTN host rewrite the task does) | ✅
| the only downstream config-download risk |
| (bonus) installer `.vsman` downloads and parses (20,527 packages) | ✅
| the `vsman overlay` step input |

This is the same code path `int.main` already runs successfully;
`int.stable` only pins it to stable 18.x bits.

> Note: the `int.stable` channel's installer manifest is named
`VisualStudioIntPreview.vsman`
(`...Channels.IntPreviewInstallerManifest`). That is just the drop's
internal naming for the stable-pinned channel and does not affect
correctness — all checks above passed.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ase' (#14006)

### Problem
The previous fix (#13993, `stable` -> `release`) was wrong. On the
official build it fails with:

> ##[error]Invalid JSON primitive: .

because `release` is **not a valid channel moniker for VS 18**.
`https://aka.ms/vs/18/release/channel` bounces to a Bing fallback page,
which the bootstrapper task saves as the `.chman` and then fails to
parse as JSON.

### Why `release` and `stable` are both wrong
The aka.ms moniker convention changed between VS17 and VS18:

| moniker | VS 17 | VS 18 |
| --- | --- | --- |
| `release` | real CDN manifest | bounces to bing.com (broken) |
| `stable` | bounces to bing.com | real **public** CDN manifest
(`VisualStudio.18.Release.chman`) |
| `int.stable` | n/a | **internal vsdrop** manifest
(`VisualStudio.18.int.stable.chman`) |

So for VS 18 the public GA channel is `stable` (not `release`). But the
MicroBuild `MicroBuildBuildVSBootstrapper` task's `CreateConfigFile`
only special-cases the VS17-era public names `release`/`preview`. Any
other name — including `stable` — is routed down the **internal** path,
where it parses the installer-manifest URL as a vsdrop
`{prefix};{suffix}` drop. `stable`'s public CDN URL has no semicolon,
hence the original *"drop url ... is invalid"* failure.

### Fix
Use **`int.stable`**: the **internal, vsdrop-backed** equivalent of
`stable`. It tracks the stable 18.x bits (not the moving `int.main` that
caused the System.Text.Json 10.0.0.4 drift in #13923), and because it is
an internal channel its installer-manifest URL is a vsdrop
`{prefix};{suffix}` URL that `CreateConfigFile` accepts.

- `https://aka.ms/vs/18/int.stable/channel` resolves to
`VisualStudio.18.int.stable.chman` on `vsdrop.microsoft.com` (verified).

Relevant task logic (`CreateConfigFile`):
https://dev.azure.com/devdiv/Engineering/_git/MicroBuild?path=/src/Tasks/BuildVSBootstrapper/plugin.ps1&line=286&lineEnd=307&lineStartColumn=1&lineEndColumn=1&lineStyle=plain&_a=contents



Companion to #14005 (vs18.6).




---

### Local validation (verified before merge)
Replicated every step the `MicroBuildBuildVSBootstrapper` task performs,
using the same VSDrop token audience the task uses

| Check | Result | Failure mode it rules out |
| --- | --- | --- |
| (a) `aka.ms/vs/18/int.stable/channel` redirects to **vsdrop** (not
bing.com) | ✅ | the `release` "Invalid JSON primitive" (Bing fallback
page) |
| (b) `.chman` downloads and is valid JSON (11 channelItems) | ✅ | the
`release` "Invalid JSON primitive" |
| (c) installer-manifest URL splits into `{prefix};{suffix}` (2 parts) |
✅ | the `stable` "drop url ... is invalid" (`CreateConfigFile`
`Split(";")` check) |
| (d) config payload
`…;bootstrappers/Enterprise/configuration/vs_setup_bootstrapper.config`
returns **HTTP 200** (after the corp→ZTN host rewrite the task does) | ✅
| the only downstream config-download risk |
| (bonus) installer `.vsman` downloads and parses (20,527 packages) | ✅
| the `vsman overlay` step input |

This is the same code path `int.main` already runs successfully;
`int.stable` only pins it to stable 18.x bits.

> Note: the `int.stable` channel's installer manifest is named
`VisualStudioIntPreview.vsman`
(`...Channels.IntPreviewInstallerManifest`). That is just the drop's
internal naming for the stable-pinned channel and does not affect
correctness — all checks above passed.

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

On the `vs17.14` servicing branch, the official build (pipeline
`MSBuild` / definition `9434`) fails in the `OptProf - Build VS
bootstrapper` step (`MicroBuildBuildVSBootstrapper@3`) with `Failed to
obtain an access token from the VSDrop Managed Identity`. `vs17.14` is
in servicing and no longer needs to collect fresh OptProf data, so this
disables OptProf collection (including the failing bootstrapper build)
while continuing to apply the last-collected optimization data so
shipped binaries stay optimized.

### Changes Made

- Changed the `enableOptProf` parameter default from `true` to `false`
in `.vsts-dotnet.yml`, which gates off all OptProf-collection steps
(`MicroBuildOptProfPlugin@6`, `MicroBuildBuildVSBootstrapper@3`,
`VisualStudio.BuildIbcTrainingSettings`, ProfilingInputs publish,
`ready-for-training` tag).
- Removed the `${{ if eq(parameters.enableOptProf, false) }}` block in
`.vsts-dotnet.yml` that forced `SkipApplyOptimizationData` to `true`,
decoupling data *collection* from data *application*;
`SkipApplyOptimizationData` is now governed solely by the pipeline
variable (default `false` = keep applying existing data).
- Gated the `OptProf - Publish Artifact: MicroBuildOutputs` task in
`azure-pipelines/.vsts-dotnet-build-jobs.yml` on `${{
parameters.enableOptProf }}`, since `BootstrapperInfo.json` is only
produced when the bootstrapper runs.

### Testing

- Validated both YAML files parse successfully.
- Pending: queue official build `9434` on the merged `vs17.14` branch
and confirm `OptProf - Build VS bootstrapper` is skipped, the build is
green, and the `Build` step log shows optimization data is still applied
(i.e., `EnableNgenOptimization` is not set to `false`).
- Result: <fill in build link / outcome after the official run>.

### Notes

- `enableOptProf` remains a queue-time parameter, so OptProf collection
can be re-enabled per-run if the VSDrop managed-identity/channel issue
is later resolved.
- No product code changes; VSSetup/packages are still produced, so
downstream VS insertion is unaffected.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…rbf + HashCode 6.0) (#14127)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Rainer Sigwald <raines@microsoft.com>
This pull request updates the following dependencies

[marker]: <> (Begin:36ae1796-1371-4d85-8c50-69153b9e67d7)
## From https://github.com/dotnet/arcade
- **Subscription**:
[36ae1796-1371-4d85-8c50-69153b9e67d7](https://maestro.dot.net/subscriptions?search=36ae1796-1371-4d85-8c50-69153b9e67d7)
- **Build**:
[20260624.4](https://dev.azure.com/dnceng/internal/_build/results?buildId=3007611)
([320140](https://maestro.dot.net/channel/8394/github:dotnet:arcade/build/320140))
- **Date Produced**: June 24, 2026 11:30:51 PM UTC
- **Commit**:
[1373629deb1e04f3e8e66fb68bb48ae36479c5ef](dotnet/arcade@1373629)
- **Branch**:
[release/10.0](https://github.com/dotnet/arcade/tree/release/10.0)

[DependencyUpdate]: <> (Begin)

- **Dependency Updates**:
  - From [10.0.0-beta.26304.4 to 10.0.0-beta.26324.4][1]
     - Microsoft.DotNet.Arcade.Sdk
     - Microsoft.DotNet.XUnitExtensions

[1]: dotnet/arcade@7b306e3...1373629

[DependencyUpdate]: <> (End)

- **Updates to .NET SDKs:**
  - Updates **tools.dotnet** to 10.0.109

[marker]: <> (End:36ae1796-1371-4d85-8c50-69153b9e67d7)

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Aleš Prokop <ales.prokop.dev@gmail.com>
I detected changes in the vs17.14 branch which have not been merged yet
to vs18.0. I'm a robot and am configured to help you automatically keep
vs18.0 up to date, so I've opened this PR.

This PR merges commits made on vs17.14 by the following committers:

* @AlesProkop
* @dotnet-maestro[bot]

## 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.

<img alt="merge button instructions"
src="https://i.imgur.com/GepcNJV.png" width="300" />

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.

``` sh
git fetch
git checkout vs17.14
git pull --ff-only
git checkout vs18.0
git pull --ff-only
git merge --no-ff vs17.14

# 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/msbuild HEAD:merge/vs17.14-to-vs18.0
```

<details>
<summary>or if you are using SSH</summary>

```
git push git@github.com:dotnet/msbuild HEAD:merge/vs17.14-to-vs18.0
```

</details>


After PR checks are complete push the branch
```
git push
```

## Instructions for resolving conflicts

:warning: If there are merge conflicts, you will need to resolve them
manually before merging. You can do this [using GitHub][resolve-github]
or using the [command line][resolve-cli].

[resolve-github]:
https://help.github.com/articles/resolving-a-merge-conflict-on-github/
[resolve-cli]:
https://help.github.com/articles/resolving-a-merge-conflict-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/vs17.14-to-vs18.0'. 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/vs17.14-to-vs18.0 origin/vs18.0
git pull https://github.com/dotnet/msbuild merge/vs17.14-to-vs18.0
(make changes)
git commit -m "Updated PR with my changes"
git push https://github.com/dotnet/msbuild HEAD:merge/vs17.14-to-vs18.0
```

<details>
    <summary>or if you are using SSH</summary>

```
git fetch
git checkout -b merge/vs17.14-to-vs18.0 origin/vs18.0
git pull git@github.com:dotnet/msbuild merge/vs17.14-to-vs18.0
(make changes)
git commit -m "Updated PR with my changes"
git push git@github.com:dotnet/msbuild HEAD:merge/vs17.14-to-vs18.0
```

</details>

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.
AlesProkop and others added 6 commits July 7, 2026 13:26
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
I detected changes in the vs18.0 branch which have not been merged yet
to vs18.6. I'm a robot and am configured to help you automatically keep
vs18.6 up to date, so I've opened this PR.

This PR merges commits made on vs18.0 by the following committers:

* @AlesProkop
* @dotnet-maestro[bot]
* @rainersigwald
* @JanProvaznik

## 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.

<img alt="merge button instructions"
src="https://i.imgur.com/GepcNJV.png" width="300" />

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.

``` sh
git fetch
git checkout vs18.0
git pull --ff-only
git checkout vs18.6
git pull --ff-only
git merge --no-ff vs18.0

# 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/msbuild HEAD:merge/vs18.0-to-vs18.6
```

<details>
<summary>or if you are using SSH</summary>

```
git push git@github.com:dotnet/msbuild HEAD:merge/vs18.0-to-vs18.6
```

</details>


After PR checks are complete push the branch
```
git push
```

## Instructions for resolving conflicts

:warning: If there are merge conflicts, you will need to resolve them
manually before merging. You can do this [using GitHub][resolve-github]
or using the [command line][resolve-cli].

[resolve-github]:
https://help.github.com/articles/resolving-a-merge-conflict-on-github/
[resolve-cli]:
https://help.github.com/articles/resolving-a-merge-conflict-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/vs18.0-to-vs18.6'. 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/vs18.0-to-vs18.6 origin/vs18.6
git pull https://github.com/dotnet/msbuild merge/vs18.0-to-vs18.6
(make changes)
git commit -m "Updated PR with my changes"
git push https://github.com/dotnet/msbuild HEAD:merge/vs18.0-to-vs18.6
```

<details>
    <summary>or if you are using SSH</summary>

```
git fetch
git checkout -b merge/vs18.0-to-vs18.6 origin/vs18.6
git pull git@github.com:dotnet/msbuild merge/vs18.0-to-vs18.6
(make changes)
git commit -m "Updated PR with my changes"
git push git@github.com:dotnet/msbuild HEAD:merge/vs18.0-to-vs18.6
```

</details>

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.
Keep the Arcade dependency metadata aligned with the xUnit v3 package references on vs18.7 so restore gets a concrete Microsoft.DotNet.XUnitV3Extensions version.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
I detected changes in the vs18.6 branch which have not been merged yet
to vs18.7. I'm a robot and am configured to help you automatically keep
vs18.7 up to date, so I've opened this PR.

This PR merges commits made on vs18.6 by the following committers:

* @AlesProkop
* @ViktorHofer
* @dotnet-maestro[bot]
* @rainersigwald
* @JanProvaznik
* @jankratochvilcz

## 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.

<img alt="merge button instructions"
src="https://i.imgur.com/GepcNJV.png" width="300" />

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.

``` sh
git fetch
git checkout vs18.6
git pull --ff-only
git checkout vs18.7
git pull --ff-only
git merge --no-ff vs18.6

# 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/msbuild HEAD:merge/vs18.6-to-vs18.7
```

<details>
<summary>or if you are using SSH</summary>

```
git push git@github.com:dotnet/msbuild HEAD:merge/vs18.6-to-vs18.7
```

</details>


After PR checks are complete push the branch
```
git push
```

## Instructions for resolving conflicts

:warning: If there are merge conflicts, you will need to resolve them
manually before merging. You can do this [using GitHub][resolve-github]
or using the [command line][resolve-cli].

[resolve-github]:
https://help.github.com/articles/resolving-a-merge-conflict-on-github/
[resolve-cli]:
https://help.github.com/articles/resolving-a-merge-conflict-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/vs18.6-to-vs18.7'. 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/vs18.6-to-vs18.7 origin/vs18.7
git pull https://github.com/dotnet/msbuild merge/vs18.6-to-vs18.7
(make changes)
git commit -m "Updated PR with my changes"
git push https://github.com/dotnet/msbuild HEAD:merge/vs18.6-to-vs18.7
```

<details>
    <summary>or if you are using SSH</summary>

```
git fetch
git checkout -b merge/vs18.6-to-vs18.7 origin/vs18.7
git pull git@github.com:dotnet/msbuild merge/vs18.6-to-vs18.7
(make changes)
git commit -m "Updated PR with my changes"
git push git@github.com:dotnet/msbuild HEAD:merge/vs18.6-to-vs18.7
```

</details>

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.
@github-actions
github-actions Bot requested a review from a team as a code owner July 8, 2026 08:20
@AlesProkop
AlesProkop merged commit 86af341 into vs18.8 Jul 8, 2026
11 checks passed
@AlesProkop
AlesProkop deleted the merge/vs18.7-to-vs18.8 branch July 8, 2026 10:11
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.

6 participants