-
Notifications
You must be signed in to change notification settings - Fork 6k
Description
Description
Original issue: dotnet/sdk#22887
PR with changes: dotnet/sdk#35640
Targeting: .NET 9 (main
of SDK repo)
Summary
Previously, the list of commands below would output:
- Start/End boundary lines for custom parsing to locate the JSON body
- Any other logging text that the commands would output during normal operation
- JSON body
Now, these commands only output the JSON body:
dotnet workload list --machine-readable
dotnet workload install --print-download-link-only
dotnet workload update --print-download-link-only
dotnet workload update --print-rollback
Version
Other (please put exact version in description textbox)
Previous behavior
Example output (provided by customer) of dotnet workload list --machine-readable
:
Failed to update the advertising manifest microsoft.net.sdk.tvos: Unable to load the service index for source https://REDACTED/index.json..
Failed to update the advertising manifest microsoft.net.sdk.android: Unable to load the service index for source https://REDACTED/index.json..
Failed to update the advertising manifest microsoft.net.sdk.maui: Unable to load the service index for source https://REDACTED/index.json..
Failed to update the advertising manifest microsoft.net.workload.emscripten: Unable to load the service index for source https://REDACTED/index.json..
Failed to update the advertising manifest microsoft.net.sdk.macos: Unable to load the service index for source https://REDACTED/index.json..
Failed to update the advertising manifest microsoft.net.sdk.maccatalyst: Unable to load the service index for source https://REDACTED/index.json..
Failed to update the advertising manifest microsoft.net.sdk.ios: Unable to load the service index for source https://REDACTED/index.json..
Failed to update the advertising manifest microsoft.net.workload.mono.toolchain: Unable to load the service index for source https://REDACTED/index.json..
==workloadListJsonOutputStart==
{"installed":["macos","ios"],"updateAvailable":[{"existingManifestVersion":"12.0.101-preview.10.249","availableUpdateManifestVersion":"12.0.101-preview.10.251","description":".NET SDK Workload for building macOS applications.","workloadId":"macos"},{"existingManifestVersion":"15.0.101-preview.9.31","availableUpdateManifestVersion":"15.0.101-preview.10.251","description":".NET SDK Workload for building iOS applications.","workloadId":"ios"}]}
==workloadListJsonOutputEnd==
New behavior
Example output of new behavior from dotnet workload list --machine-readable
:
{"installed":["macos","ios"],"updateAvailable":[{"existingManifestVersion":"12.0.101-preview.10.249","availableUpdateManifestVersion":"12.0.101-preview.10.251","description":".NET SDK Workload for building macOS applications.","workloadId":"macos"},{"existingManifestVersion":"15.0.101-preview.9.31","availableUpdateManifestVersion":"15.0.101-preview.10.251","description":".NET SDK Workload for building iOS applications.","workloadId":"ios"}]}
Type of breaking change
- Binary incompatible: Existing binaries may encounter a breaking change in behavior, such as failure to load or execute, and if so, require recompilation.
- Source incompatible: When recompiled using the new SDK or component or to target the new runtime, existing source code may require source changes to compile successfully.
- Behavioral change: Existing binaries may behave differently at run time.
Reason for change
Reason
Many CLI products when JSON is requested only output JSON. We wanted to follow suit and also only output JSON so no custom parsing is required for customers that use these commands in their tooling. Then, customers can pipe the output of these commands directly into a JSON parser instead of intermediary parsing logic.
Recommended action
Recommended Action
If their code is searching for the following start/end boundary text prior to parsing JSON, they no longer need to perform this search in the output. Instead, they should take the output of these commands directly to be the JSON body.
==workloadListJsonOutputStart==
/==workloadListJsonOutputEnd==
==allPackageLinksJsonOutputStart==
/==allPackageLinksJsonOutputEnd==
==workloadRollbackDefinitionJsonOutputStart==
/==workloadRollbackDefinitionJsonOutputEnd==
Feature area
SDK
Affected APIs
Commands Affected
dotnet workload list --machine-readable
dotnet workload install --print-download-link-only
dotnet workload update --print-download-link-only
dotnet workload update --print-rollback