106 karma · joined September 26, 2017
* you have mixed C#/F# projects in a solution (C# and F# support in VSCode can't communicate today)
* you use Rider for other technology
* you want paid support for your editor tools
* you prefer IDE-style experiences rather than editor/ extension-style experiences
* you want to take advantage of Rider features like their accelerated build caching
It's really nice to derive mostly-complete container images from information your build system already has available, and the speed/UX benefits are great too!
Having said that, because the .Net toolchain is capable of cross-targeting this feature should enable broad swaths of users to not need to build inside a container to get a container created. So I completely agree with your puzzlement here and would hope that this feature leads to a reduction in that particular pattern.
* eventually providing an 'eject' mechanism to create the matching Dockerfile for a given project. this serves as a basis for any customization you might need, as well as a base language that many existing tools can understand.
* making it easy to include arbitrary image layers by reference in your container through a syntax like `<ContainerLayer Include="<layer SHA ref>" />`. This makes it easy to grab already-built components and inject them into your build.
I entirely agree with your summary. More choices, but all built on the same standard foundation :)
IMO for a significant part of the user base there's no reason to have to manage that at all - .NET is capable of cross-targeting enough to not need to perform the build inside of a container. That keeps the user in the 'build context' that they are used to, and we can use all of that context to still end up at the ideal result - a correct container, with all of their app dependencies.
Broadly we just want to lower barriers to containerization for all .NET developers. Jib/Ko/etc are proven patterns in this field, and we saw an opportunity to use the existing infrastructure of MSBuild to reduce the amount of concepts our users would need to know in order to be successful in their journey to the cloud. On top of that, having the feature in SDK provides some opportunities to help users adhere to conventions around container labeling (or customize container metadata entirely!) so we can make .NET containers good citizens in the container ecosystem overall.
* resumable code for computation expressions - zero-overhead, ergonomic state machines that are user-extensible! really excited to see what folks dream up with this.
* overloading computation expressions members - another great enhancement for using CE's for task-specific DSLs
* enhancements to debugging to make stepping through pipelines muuuuuuch friendlier
* relaxing the indentation rules to make them much more natural for a whole host of expressions
just really solid, feel-good features in this release. Let's keep 'em coming!
1: https://docs.microsoft.com/en-us/dotnet/core/install/linux-d...
There are also many different display/view methods that more sophisticated LSP implementations can implement. In my own LSP, we have different 'views' of the signatures/types/docs for
* hovers * signature completion * detailed type-level embedded docs in a separate pane
to name a few. It's entirely customizable.
LSP is _the_ way to write IDE integrations in the modern era.
(I maintain LSP tooling for F# and actively support at least half of the editors above)
The safer route is to install the non-snap-based versions.
(I maintain this tooling, for what it's worth)