Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version selection improvements #259

Merged
merged 10 commits into from
Apr 6, 2022
Merged

Version selection improvements #259

merged 10 commits into from
Apr 6, 2022

Conversation

richlander
Copy link
Member

Summary of significant changes:

  • Disable multi-level lookup.
  • Change default for global.json SDK version to a floor version, as opposed to the current pinning behavior.
  • Enable controlling SDK version by environment variable (ENV).
  • Enable proxying to a local/private SDK via the PATH SDK.
  • Enable specifying a floor runtime version for an environment.

Dependency on: https://github.com/dotnet/designs/blob/main/accepted/2022/disable-multi-level-lookup-by-default.md

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
richlander and others added 2 commits March 2, 2022 09:57
Co-authored-by: Omair Majid <omajid@redhat.com>
Co-authored-by: Jan Kotas <jkotas@microsoft.com>

Ideally, organizations could adopt the following approach for runtime management in their environments:

- Adopt and deploy new .NET versions into their environments quickly, with no impact on existing applications (already the case).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you want to cover the case of customers who want multiple apps running on multiple different runtime versions on the same server like some internal partners we have?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't that the same scenario? The implication here is that the new .NET version is for another app.

The most problematic behaviors today are:

- [Multi-level lookup](https://github.com/dotnet/sdk/issues/12353) can result in the global install location being used when a private location is intended.
- `global.json` defaults to no roll-forward by default, for the specified SDK version. This results in very fragile environments, by default. Instead, the version specified should be a version floor by default.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, we have a problem with rollforward and previews today though that may only affect .NET teams. Not sure if that should be included or not.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you elaborate? You mean that we roll-forward to previews by default and we could reconsider that as part of his change?

}
```

The feature bands have a reason to exist. With each feature band (`.200`, `.300`, ...), there is typically a significant update in a tools component like Roslyn, MSBuild, or NuGet. There may be compatibility breaks. However, if there are significant breaks, that's probably something that needs to resolve. The feature bands are not intended for intentional breaking changes.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The SDK doesn't include intentional breaking changes in feature bands but tools have no awareness of feature bands. They treat them as VS releases and hold to no requirement of their being no breaking changes. We've been hit by this in the past where we thought the feature band was low risk but it turned out a change in nuget or roslyn was more significant. We may want to consider how to reconcile this with other tools teams as we can't limit them to one breaking change release a year but also don't want every feature band release to include customer risk.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like your comment and the text are saying the same thing. No?

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.

9 participants