Roll forward (dotnet/core-setup#5691)
authorVitek Karas <vitek.karas@microsoft.com>
Fri, 19 Apr 2019 21:35:58 +0000 (14:35 -0700)
committerGitHub <noreply@github.com>
Fri, 19 Apr 2019 21:35:58 +0000 (14:35 -0700)
commitaffae2fcaa0135616c80ee4531d2130e04ab29b2
tree00b1aed91630ec8222727784f71f35a6a2109502
parenta6fd9edb1310dd8a1e7d177bd7f82c6952c00e00
Roll forward (dotnet/core-setup#5691)

This is the new implementation of the framework resolution with the new roll forward setting.
The spec for this is [framework version resolution](https://github.com/dotnet/core-setup/blob/master/Documentation/design-docs/framework-version-resolution.md).

Major parts:
- introduce `rollForward` setting (CLI, env, config)
- convert the existing `rollForwardOnNoCandidateFx` to the new `rollForward` internally
- change framework reference compatibility algorithm to use the new `rollFoward` settings.
- basically rewrite the framework resolution algorithm with the new settings and fix an existing bug with incorrect retry logic
- add test infra for the new setting
- add tests for the new setting

Commit migrated from https://github.com/dotnet/core-setup/commit/ef496a091be8d8b43ab8c4ed3622ca89bce251cb
35 files changed:
docs/installer/design-docs/framework-version-resolution.md
src/installer/corehost/cli/fx_definition.cpp
src/installer/corehost/cli/fx_definition.h
src/installer/corehost/cli/fx_reference.cpp
src/installer/corehost/cli/fx_reference.h
src/installer/corehost/cli/fxr/CMakeLists.txt
src/installer/corehost/cli/fxr/fx_muxer.cpp
src/installer/corehost/cli/fxr/fx_resolver.cpp
src/installer/corehost/cli/fxr/fx_resolver.h
src/installer/corehost/cli/fxr/fx_resolver.messages.cpp
src/installer/corehost/cli/hostpolicy/CMakeLists.txt
src/installer/corehost/cli/hostpolicy/hostpolicy.cpp
src/installer/corehost/cli/roll_forward_option.cpp [new file with mode: 0644]
src/installer/corehost/cli/roll_forward_option.h [new file with mode: 0644]
src/installer/corehost/cli/roll_fwd_on_no_candidate_fx_option.h
src/installer/corehost/cli/runtime_config.cpp
src/installer/corehost/cli/runtime_config.h
src/installer/corehost/common/utils.cpp
src/installer/test/HostActivationTests/Constants.cs
src/installer/test/HostActivationTests/FrameworkResolution/ApplyPatchesSettings.cs
src/installer/test/HostActivationTests/FrameworkResolution/DotNetCliExtensions.cs
src/installer/test/HostActivationTests/FrameworkResolution/FrameworkResolutionBase.Settings.cs
src/installer/test/HostActivationTests/FrameworkResolution/FrameworkResolutionBase.cs
src/installer/test/HostActivationTests/FrameworkResolution/FrameworkResolutionCommandResultExtensions.cs
src/installer/test/HostActivationTests/FrameworkResolution/FxVersionCLI.cs
src/installer/test/HostActivationTests/FrameworkResolution/MultipleHives.cs
src/installer/test/HostActivationTests/FrameworkResolution/RollForwardMultipleFrameworks.cs [new file with mode: 0644]
src/installer/test/HostActivationTests/FrameworkResolution/RollForwardOnNoCandidateFx.cs
src/installer/test/HostActivationTests/FrameworkResolution/RollForwardOnNoCandidateFxMultipleFrameworks.cs
src/installer/test/HostActivationTests/FrameworkResolution/RollForwardOnNoCandidateFxSettings.cs
src/installer/test/HostActivationTests/FrameworkResolution/RollForwardPreReleaseOnly.cs [new file with mode: 0644]
src/installer/test/HostActivationTests/FrameworkResolution/RollForwardReleaseAndPreRelease.cs [new file with mode: 0644]
src/installer/test/HostActivationTests/FrameworkResolution/RollForwardReleaseOnly.cs [new file with mode: 0644]
src/installer/test/HostActivationTests/FrameworkResolution/RollForwardSettings.cs [new file with mode: 0644]
src/installer/test/HostActivationTests/RuntimeConfig.cs