Skip to content

Support choosing VS version and the tool specified in global.json rather than installed VS in the image #15894

Open
@GangWang01

Description

@GangWang01
  • This issue is blocking
    https://github.com/dotnet/msbuild old release branches couldn't use bootstrapped binaries to run in CI.
  • This issue is causing unreasonable pain

In dotnet/msbuild bootstrapping msbuild.exe binaries need additional binaries such as NuGet binaries from VS installation or some tool package. CI build utilizes VS installation in the image detected by

$vsInfo = LocateVisualStudio $vsRequirements
, rather than the VS version and the tool specified in global.json.
Since some dependency such as System.Text.Json of installed VS (17.13) in the image windows-2022 has higher version than the one in MSBuild’s old release branch like vs17.10, bootstrap msbuild.exe failed to run in CI with the error.

error MSB4242: (NETCORE_ENGINEERING_TELEMETRY=Restore) SDK Resolver Failure: "The SDK resolver "Microsoft.DotNet.MSBuildSdkResolver" failed while attempting to resolve the SDK "Microsoft.NET.Sdk". Exception: "System.IO.FileNotFoundException: Could not load file or assembly 'System.Text.Json, Version=8.0.0.4, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified. 

See run result https://github.com/dotnet/msbuild/runs/42642732115.

We had to disable bootstrap and some tests that relies on the bootstrap for CI in the old release branches.

It's expected there is a way to choose VS version and tool specified in global.json even if VS is installed, like dotnet/msbuild@507f930 in PR dotnet/msbuild#11951.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions