Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

dsplaisted
Copy link
Member

@dsplaisted dsplaisted commented Oct 17, 2022

Description

The WASM workload stopped working when we switched to stable branding. This is because the order in which we imported workload manifest targets was not guaranteed and ended up changing when the branding changed, but the WASM workload manifest targets did depend on the order they were imported.

To fix this, we will return workload manifests in a stable order. Manifests in the IncludedWorkloadManifests.txt file will be first, and in the same order they appear in that file. Then the rest of the manifests (if any) will be returned in (ordinal case-insensitive) alphabetical order.

Fixes #22358
Fixes #28607

Alternatively, we could have changed the WASM workload manifest targets to be resilient to being imported in an arbitrary order. That would have been a lot more risky: The change itself would be more complex, it would be harder to test, and the time to flow the change through the build graph would be longer.

Customer Impact

Without this change (or another more risky change to the WASM workload manifest targets), the WASM workload won't work in stable versioned .NET SDKs.

Regression

Yes, this worked in earlier prereleases, but dropping the prerelease specifier from the version triggered this regression.

Risk

Low

Testing

Added unit test. Planning to validate E2E scenario with WASM manually.

@ghost ghost added the Area-Workloads label Oct 17, 2022
@dsplaisted dsplaisted requested review from lewing and a team October 17, 2022 22:33
@rbhanda rbhanda added this to the 7.0.0 milestone Oct 18, 2022
@radical
Copy link
Member

radical commented Oct 18, 2022

@dsplaisted how do I test this? Our wasm tests use the installer via dotnet-install.sh, and then install wasm-tools workload on that.

@radical
Copy link
Member

radical commented Oct 18, 2022

I tested this locally by copying over lib/net6.0/Microsoft.NET.Sdk.WorkloadManifestReader.dll, and lib/net6.0/Microsoft.NET.Sdk.WorkloadMSBuildSdkResolver.dll from a locally build of this branch, to <dotnet>/sdk/7.0.100. And the logs show the expected import order.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants