The .NET Stacks #34: 🎙 Visual Studio gets an update, and you get a rant
Happy Monday to you all. I hope you had a good week. Put on your comfy mittens and let’s get started.
- Visual Studio gets an update, and you get a rant
- EF Core 6 designs take shape
- GitHub Pages gets more enterprise-y
- A quick correction
Visual Studio gets an update, and you get a rant
The Visual Studio team has released v16.9 Preview 3. This one’s a hodgepodge, but a big call out is the ability to view source generators from the Solution Explorer. This allows you to inspect the generated code easily. People are already getting excited.
Since we’re on the subject, Jerry Nixon polled some folks this week about their preferred IDE. (I say VS Code is only an IDE when you install extensions, but I digress.) As of Sunday night, JetBrains Rider comes in at around 26%. It might seem low to you, but not to me. After years of Windows-only .NET making Visual Studio the only realistic IDE, it’s amazing that a third-party tool is gaining so much traction. This recognition is well-deserved, by the way—it’s fast, feature-rich, and does so much out-of-the-box that Visual Studio doesn’t. I installed it this week after thinking about it for years, and am impressed so far.
Of course, your mileage may vary and the “new and different” is always alluring at first. But, to me, what’s more troubling is my reason for giving it a try. I wouldn’t be offended if you called me a Visual Studio fanboy. I’ve used it for over a decade and a half. Even so: the Razor editing experience is a pain (with the admission they are rolling out a new editor), and component discovery is a hassle when working with Blazor, and closing and restarting Visual Studio is still a thing, in 2021. This is part of a general theme (and I’m not the only one): why is Blazor tooling in Visual Studio still so subpar? I’ve found Rider to provide a better Blazor development experience. Is it antecdotal? Yes. Do I think it’s just me? No.
I know it’s being worked on, I get it, but: when you deliver a wonderful, modern library with hype that hasn’t been seen in years … how is your flagship IDE not providing a development experience to match? Whether it’s internal priorities or a million other reasons that impact a large corporation, the expectation that Visual Studio users will have to wait and deal with it is suitable when customers don’t have a choice. They do now, and a non-Microsoft tool is consistently beating them on the Blazor development experience. I’m disappointed.
EF Core 6 designs take shape
This week, Jeremy Likness shared the high-level, subject-to-change plan for EF Core 6—to be released with .NET 6 in November. It’ll target .NET 6, of course, won’t run on .NET Framework and likely will not support any flavor of .NET Standard.
Some big features make the list, like SQL Server temporal tables (allowing you to create them from migrations and the ability to access historical data), JSON columns, compiled models, and a plan to match Dapper performance. The latter definitely caught my eye. As David Ramel writes this week, he quotes Jeremy as saying: “This is a significant challenge which will likely not be fully achieved. Nevertheless, we will get as close as we can.”
In other EF news, the team released a new doc on EF Core change tracking.
GitHub Pages gets more enterprise-y
As Microsoft is trying to make sense of competing workloads with GitHub and consolidate products–we’ve talked a few times about Azure DevOps and GitHub Actions—look for things in GitHub to get a little more enterprise-y.
This week, GitHub released something called “Access Control for GitHub Pages”, rolled out to the GitHub Enterprise Cloud. This gives you the option to limit access of GitHub Pages to users with repository access. This is ideal for documentation and knowledge bases, or any other static site needs.
A quick correction
There is no magic “undo” command with newsletters, sadly. I’d like to make a correction from last week.
I hope you enjoyed last week’s interview with Steve Sanderson, the creator of Blazor. I made a mistake in the introduction. Here’s what I originally wrote:
It seems like forever ago when, at NDC Oslo in 2017, Steve Sanderson talked about a fun project he was working on, called .NET Anywhere. In the demo, he was able to load and run C# code—ConsoleApp1.dll, specifically—in the browser, using Web Assembly. C# in the browser! In the talk, he called it “an experiment, something for you to be amused by.”
I made the implication that Steve created the Dot Net Anywhere (DNA) runtime. With apologies to Chris Bacon, not true!
Here’s what I should have said:
It seems like forever ago when, at NDC Oslo in 2017, Steve Sanderson showed off a new web UI framework with the caveat: “an experiment, something for you to be amused by.” By extending Dot Net Anywhere (DNA), Chris Bacon’s portable .NET runtime, on WebAssembly, he was able to load and run C# in the browser. In the browser!
Thanks to Steve for the clarification.
🌎 Last week in the .NET world
🔥 The Top 4
- Andrew Lock enables prerendering for Blazor WebAssembly apps.
- Daniel Krzyczkowski integrates an Azure Storage Account with his API project.
- Iris Classon deals with Azure credentials issues.
- Neils Swimberghe uses YARP to host a client and API server on a single origin to avoid CORS.
📢 Announcements
- The Azure SDK team has shipped their January release.
- Jacqueline Widdis announces Visual Studio 2019 v16.9 Preview 3.
- Jeremy Likness writes about the plan for EF Core 6.
📅 Community and events
- In .NET community standups: Machine Learning talks about FSharp.Stats, and ASP.NET continues talking architecture with David Fowler.
- The .NET Docs Show talks to Jason Bock about source generators.
- Neil MacMullen introduces Textrude for generating code from data.
- Sébastien Ros is at it again, releasing a fast parser combinator library called Parlot.
- Paul Krill writes about a new nanoFramework project.
- There’s a .NET Conf on February 25, focused on Windows development.
- Konrad Kokosa is making a mini-series on .NET GC internals.
- Gregor Suttie and Richard Hooper are starting an AKS Zero to Hero series.
- David Ramel writes how Radzen has open-sourced a ton of their Blazor components.
🌎 Web development
- Imar Spaanjaars builds an auto-deploys an ASP.NET Core app.
- Muhammed Saleem deploys Blazor WebAssembly to Azure Static Web Apps.
- Silambarasan Ilango authenticates a Blazor WASM app with Azure AD.
- Damien Bowden uses ASP.NET Core Controllers and Razor Pages from a separate shared project or assembly.
- David Grace explores how Blazor performs against other frameworks.
- Shawn Wildermuth forces ASP.NET WebForms Designer files to regenerate.
- Kristoffer Strube fixes Blazor WASM base path problems.
- Over at Code Maze, they write about downloading files with ASP.NET Core Web API and Angular.
- Joseph Guadagno uses Yarn with ASP.NET Core projects.
⛅ The cloud
- Bryan Soltis connects an Azure Logic Web App to a local Web API.
- Jonathan George triggers an Azure Synapse pipeline run from C#.
- Mark Heath automates Azure access restrictions with the Azure CLI.
- Justin Yoo uses Azure Functions to work with CloudEvents for Azure EventGrid.
- Bryan Soltis imports an OpenAPI API into Azure API Management.
- Johan Danforth sets up CI/CD to push an ASP.NET MVC app to Azure Web App.
- Brendan Burns chimes in on a concern about AKS utilization.
📔 Languages
- Khalid Abuhakmeh flattens strings with RegEx.Replace.
- Dave Brock uses configuration with C# 9 top-level programs.
- Mark Downie writes about viewing the origin of a repeating call stack.
🔧 Tools
- Michał Białecki performs a bulk copy with EF Core 5.
- Aaron Powell extends the GitHub CLI.
- David Ramel writes about what developers want with EF 6, and also writes about AWS open sourcing the .NET porting assistant GUI.
- Jon P. Smith writes about new features for unit testing EF Core 5.
- Rick Strahl takes the new Chromium WebView2 control for a spin in .NET.
- Julie Lerman keeps us updated on what she’s working on.
- Patrick Smacchia writes about Visual Studio IntelliCode.
- Miguel Bernard figures out stages in YAML pipelines.
📱 Xamarin
- Rendy Del Rosario uses dynamic data in Xamarin Forms.
- CodeChem sets up a Xamarin app with SQLite local storage.
🏗 Design, testing, and best practices
- Jeremy Miller re-evaluates test-driven development.
- Stephen Cleary continues his series on asynchronous messaging.
- Steve Smith writes about embracing API endpoints over controllers.
🎤 Podcasts
- The Azure Podcast talks to the Project Natick team.
- The .NET Rocks podcast talks to Tom Kerkhove about containers on Azure.
- The Coding After Work podcast talks with Jérôme Laban about Uno and AOT.
- The Coding Blocks podcast asks: who owns open-source software?
- The Adventures in .NET podcast talks to Jon Skeet.
- The 6-Figure Developer podcast talks about Uno with Jérôme Laban.
🎥 Videos
- James Montemagno works with MVVM Helpers.
- Data Exposed talks about Azure SQL connectivity performance tips and tricks.
- At Technology and Friends, David Giard talks to Kevin Griffin about SignalR.
- The ASP.NET Monsters talk to Adam Dymitruk about event modeling, and also talk with Scott Hunter.