The .NET Stacks #22: .NET 5 RC 2 ships, .NET Foundation all hands, and links
This week, .NET 5 RC 2 ships, we talk .NET Foundation, and look around the community.
I messaged a developer friend to see if he liked my puns, and he said “false.” I told him I didn’t appreciate the cyber boolean.
On tap this week:
- .NET 5 RC 2 ships
- .NET Foundation updates
- Last week in the .NET world
🚢 .NET 5 RC 2 ships
On Tuesday, Microsoft announced the release of .NET 5.0 RC 2. With the general release of .NET 5 on November 10, it’s the last release candidate (“near-final,” as Richard Lander puts it). You can download it here (and will also need the latest Visual Studio preview on Windows or Mac).
The biggest news out of the general announcement post? MSI installers are now available for ARM64 (yes!)—however, note the .NET 5 SDK does not contain the Windows Desktop components on ARM64. As a bonus, I learned that ClickOnce is still a thing and available for .NET Core 3.1 and .NET 5 Windows apps.
ASP.NET Core updates for Blazor
For being so late in the release cycle, ASP.NET Core was able to ship quite a few Blazor updates for RC 2.
As I’ve written about extensively, Blazor now ships with CSS isolation—the ability to scope styles to only a single component. Previously, when the feature was released in .NET 5 Preview 8, all scoped files were bundled into a big scoped.styles.css
file. If you were styling a lot of components, the bundle could get quite heavy. Now, Blazor produces one bundle for each referenced project or package with the format MyProject.styles.css
. (The official Microsoft doc on CSS isolation, which I’m writing, should be live in the next week or two.)
In addition, RC 2 comes with a bunch of Blazor tooling updates. The pesky static port issue was resolved, you can step out and over async methods, and can debug lazy loaded assemblies. Also, your tools can now throw warnings when using unsupported Blazor Web Assembly APIs from a browser. (This is part of a larger .NET 5 effort that annotates which APIs are supported with a platform compatability analyzer.)
Entity Framework Core 5 updates
Because EF Core 5 RC1 was so feature-rich—with many-to-many, mapping entity types to queries, event counters, SaveChanges
interception and much more, RC2 was spent on bug fixes. (Also, if Jeremy Likness’s callouts in every update haven’t gotten your attention, know that EF Core 5 requires .NET Standard 2.1, meaning it won’t run on .NET Standard 2.0 platforms like .NET Framework.)
Next week, I’ll talk about the .NET 5 release cycles and how Microsoft is supporting them.
🧭 .NET Foundation “all hands” meeting recap
The .NET Foundation provided a September/October update this week, and also hosted an “all hands meeting” with the Board of Directors (which was live-streamed and open to all).
In the past, the Foundation has heard loud and clear that they need to work on better communication and openness. They’ve responded with regular updates, releasing budget info, a State of the Union update, and more. There’s a proposal to change the mission statement (and you can chime in on the open GitHub issue until October 26):
Our mission is to build and educate producers and consumers, both new and old of the .NET platform. We will grow a trusted OSS ecosystem adopted by education, commercial entities, and all users. We will lead by example creating a world-wide, healthy, vibrant, and diverse OSS community.
There was some mention of the .NET Foundation maturity model, which is currently sitting on the back burner. This model helps to improve the quality and quantity of .NET open source projects (and .NET in general). A big driver of this model is to get corporate sponsors to pay for .NET Foundation projects and there’s some open work on seeing that through—how do you make the projects sustainable without lazily asking maintainers to keep working hard on them?
Rodney Littles II made a great point in saying: “There are people in the community that are asking a lot of the .NET Foundation … We are the .NET community, what are we going to do for ourselves? We have to get past this concept of a Microsoft-driven construct.”
It’s easy to get skeptical about the “Microsoft-driven construct” comment—Microsoft owns .NET and has a huge financial stake in seeing it do well, so hoping for complete independence isn’t realistic. As a result, when it comes to the .NET Foundation Microsoft is both an asset and a liability. But it’s important for the community to not view the Foundation as something that needs to be driven by Microsoft. Yes, there will always be questions on Microsoft’s independence, but at a certain point the growth of the Foundation depends on the community.
🌎 Last week in the .NET world
🔥 The Top 3
- .NET 5 RC 2 is out—Richard Lander has the details, Daniel Roth updates us on ASP.NET Core, and Jeremy Likness runs through EF Core.
- Andrew Lock runs database migrations when deploying to Kubernetes.
- Manuel Grundner writes a static site comment system with .NET Core and GitHub Actions.
📢 Announcements
- The Azure SDK team offers an October update.
- Jimmy Bogard releases MediatR 9.0.
- Rahul Bhandari releases the .NET Core October 2020 update for reliability and other non-security fixes, and Tara Overfield republishes the July 2020 Security Only Updates for .NET Framework to resolve a known issue that affected the original release as well as the .NET Framework October 2020 security and quality rollup updates.
📅 Community and events
- The .NET Foundation provides a September/October 2020 update, and also holds an “All Hands” meeting.
- Speaking of, .NET Foundation executive director Claire Novotny talks to the .NET Docs Show.
- For .NET standups, Entity Framework talks to David Pine about his new SDK and ASP.NET discusses .NET 6 planning.
- Microsoft rolls out .NET Live TV.
- GitHub shows off its new mobile PR capabilities.
- Hadi Hariri talks more about his issues with Git.
- Octopus Deploy is now a corporate sponsor of the .NET Foundation.
😎 ASP.NET Core / Blazor
- Richard Reedy adds gRPC to his Blazor app.
- Marinko Spasojevic uses an access token with Blazor WASM HttpClient and also secures Blazor WebAssembly with IdentityServer4.
- Claudio Bernasconi introduces Blazor Server.
- Niels Swimberghe pushes UI changes from Blazor Server to browser on server raised events.
- Jon Hilton renders a Blazor WASM components in your existing MVC/Razor Pages application, and also continues prerendering Blazor WASM with .NET 5.
- Steve Fenton writes about simple conditional updates to entities in ASP.NET Core MVC.
⛅ The cloud
- Dave Brock (ahem) deploys an Azure Static Web App using Blazor and Azure Functions.
- Abel Wang creates the Static Web App PR Workflow for Azure App Service using Azure DevOps.
- Mickaël Derriey uses Azure Identity with Azure SQL, Graph, and Entity Framework.
- Scott Hanselman migrated his blog to Azure, and the work is just beginning.
📔 C#
- Matthew Jones discusses classes and members in C#, and also talks about methods, parameters, and arguments in C#.
- Steve Gordon continues his series on System.Threading.Channels.
- Carmel Eve runs through the Decorator pattern in C#.
- Michael Shpilt works with dynamic Queries with expressions Trees in C#.
- Khalid Abuhakmeh works through switch expressions in C# 8.
- Marco Siccardi writes about helpful extensions with dealing with types.
- Jerome Laban profiles C# 9 source generators.
- Cezary Piatek tracks down async code smells with analyzers.
- Anthony Giretti introduces covariant returns in C# 9.
- Patrick Smacchia discusses immutable classes with C# 9 records.
📗 F#
- Isaac Abraham says you shouldn’t be skeptical about F# tooling, and also creates Azure Functions with Farmer.
- Istvan walks through why he chose F# for his AWS Lambda project.
- Christian Findlay discusses how to use F# from C#.
- Nabeel Valley walks through scripting with F#.
- Mariusz discusses file order in F#.
- Christina Ljungberg unit tests with F#.
🔧 Tools
- Mark Downie steps into a specific method in Visual Studio.
- Kayla Cinnamon offers Windows Terminal tips and tricks.
- Georg Dangl runs SQL Server integration tests in .NET Core with Docker.
- ErikEJ discusses EF Core Database First gotchas and workarounds.
- Kevin Griffin has a quick post about upgrading .NET CLI templates.
- Michael Shpilt writes about four awesome tools for debugging .NET in production.
- Steve Fenton executes raw SQL scripts in EF Core.
- Shahed Chowdhuri debugs multiple .NET Core projects in VS Code.
- David Grace sets up a Blazor WASM and ASP.NET Core Web API in Azure DevOps.
- Paul Michaels executes dynamically generated SQL in EF Core.
- Nicholas Blumhardt bootstraps logging with Serilog + ASP.NET Core.
- Scott Hanselman keeps his WSL Linux instances up to date automatically within Windows 10.
📱 Xamarin
- Mitchel Sellers adds dark theme support for Xamarin Forms Shell.
- Leomaris Reyes offers 5 tips to use the grid for layouts.
- Yana Kerpecheva chooses a time duration with Telerik TimeSpan Picker for Xamarin.
- Delpin Susai Raj supports dark mode.
🎤 Podcasts
- The .NET Rocks podcast talks about migrating .NET Applications to Azure with Mike Richter.
- The Changelog talks to Spotify about shipping at scale.
- The Azure DevOps Podcast talks about what’s new in Azure App Service.
- The Coding Blocks podcast continues talking about the DevOps Handbook.
🎥 Videos
- The ON.NET Show talks about PWAs with Blazor, the YARP reverse proxy, and Azure Static Web Apps.
- Immo Landwerth discusses the journey to .NET 5 and also .NET 5 cross-plat development.