The .NET Stacks #47: 🧨 Now with 32 more bits
NOTE: This is the web version of my weekly newsletter, which was released on April 26, 2021. To get the issues right away, subscribe at dotnetstacks.com or at the bottom of this post.
Happy Monday! Here’s what we’re talking about this week:
- One big thing: Visual Studio 2022 to be 64-bit
- The little thing: API updates coming to Preview 4, memory dump tooling, dotnet monitor updates
- Last week in the .NET world
One big thing: Visual Studio 2022 to be 64-bit
Last week, I provided a tooling update. Figuring the next major updates would occur around Build, it was a good time to get up to speed. I pushed the newsletter, started my workday, then an hour later, Amanda Silver wrote a post about Visual Studio 2022. Oops.
The biggest news: Visual Studio 2022 will be 64-bit and is no longer chained to limited memory (4 gigs or so) in the main devenv.exe process. If you look at Silver’s post, she has a video of a 64-bit Visual Studio app working easily with 1600 projects and 300k files. Finally.
With interest dating back in 2011, the Visual Studio team responded in 2016, saying that “at this time we don’t believe the returns merit the investment and resultant complexity.” Times have changed—hardware capabilities have improved, and VS is no longer the only .NET IDE option—and it’s now worth it.
For example, if you look at the issue in the Developer Community, a few comments echo what Microsoft has heard for a few years now:
This year my company(size 15k+) started to provide RAIDER to employees and plans to cancel our Enterprise VS subscriptions as VS is highly unproductive because of memory limitations of 32 bit application.
Lately I’m mainly using Rider. It does about 80% of what VS does, but it does that 80% without worrying about running out of ram.
To be clear, as David Ramel notes, Visual Studio has been available in a 64-bit edition to create 64-bit apps on 64-bit machines, but the application itself has previously been a 32-bit app. JetBrains cheekily welcomed Visual Studio to the 64-bit club, but this also means ReSharper will have more room to breathe. When the time comes, you’ll need to grab 64-bit versions of your favorite extensions as well.
Of course, 64-bit support isn’t the only thing coming to Visual Studio 2022. VS 2022 promises a better UI interface, enhanced diagnostics and debugging, productivity updates, improved code search, and more. The first preview will ship this summer, with UI refinements and accessibility improvements. In the meantime, you can check out the most requested features from the community.
The little things: API updates coming to Preview 4, async analyzers, dotnet monitor updates
A couple weeks ago, we talked about the FeatherHttp project, a lightweight, scalable way of writing APIs without the typical overhead that comes with .NET APIs today.
Here’s what I said about it:
Fowler says the repo has three key goals: to be built on the same primitives on .NET Core, to be optimized to build HTTP APIs quickly, and having the ability to take advantage of existing .NET Core middleware and frameworks. According to a GitHub comment, the solution uses 90% of ASP.NET Core and changes the Startup pattern to be more lightweight.
That functionality will start rolling out in .NET 6 Preview 4 in a few weeks. (Along with AOT support, Preview 4 promises to be a satisfying update.)
David Fowler tweeted about it and the discussion was spicy.
I’m personally excited to give this a spin. If it isn’t your jam, it doesn’t have to be—it isn’t a breaking change, and you can always use your current solution. But as APIs evolve with microservices, much of the core logic is done outside of the endpoints anyway, so you may find you don’t need the complexity and overhead with writing APIs in MVC.
Mark Downie and his team have been doing some great work with managed memory dump analyzers. If you think that’s too low-level, reconsider—when logging and local debugging fail you (or issues aren’t reproducible easily), memory dump analysis can be your friend. It isn’t always easy to work with memory dumps, though. To help folks new to dump debugging, Microsoft has developed a new .NET Diagnostics Analyzer tool to quickly identify or rule out issues.
A great use case is finding async anti-patterns, a common cause of thread starvation, which only may become prevelant when you hit high production workloads. Check out the blog post to see how it can detect some “sync-over-async” issues.
In passing, we’ve talked about the dotnet monitor tool. It allows you to access diagnostics information with a dotnet process. It’s no longer experimental: it’s now a supported tool in the .NET ecosystem. Sourabh Shirhatti wrote about that and recent updates.
Lastly, a nice tip from Khalid Abuhakmeh:
🌎 Last week in the .NET world
🔥 The Top 3
- Kristoffer Strube works with DynamicComponent in Blazor.
- Leomaris Reyes writes about getting started with Xamarin Forms.
- Konrad Kokosa has a quiz to check your level of knowledge about .NET memory management.
📢 Announcements
- Amanda Silver rolls out Visual Studio 2022.
- Sourabh Shirhatti writes about what’s new in dotnet monitor.
- Mark Downie announces memory dump analyzers that detect async antipatterns.
📅 Community and events
- GitHub rolls out a new Mars 2020 Helicopter Mission badge.
- Maarten Balliauw announces new .NET tutorials from JetBrains.
- Microsoft is putting on a free live stream event on Friday called “Let’s Learn .NET”.
- Shahed Chowdhuri is launching a new “Azure, Simplified” video series.
- For weekly standups: ASP.NET talks about .NET 6 ASP.NET Core updates and Entity Framework shows off how to contribute.
- The .NET Docs Show optimizes Linux containers with Robert Rozas.
🌎 Web development
- Matthew Jones continues building a Tetris app in Blazor.
- Jeff Fritz introduces his KlipTok project.
- Jon Hilton asks: will .NET 6 fix Blazor Prerendering?
- Claudio Bernasconi builds a dashboard in Blazor.
- David Grace explains why the ASP.NET Core FromBody can return null.
- Sardar Mudassar Ali tests an ASP.NET Core 5 Web API service with Swagger.
- Thomas Claudius Huber works with local storage and session storage in Blazor.
- Muhammad Rehan Saeed writes about CSS best practices.
- Damien Bowden secures multiple Auth0 APIs in ASP.NET Core using OAuth bearer tokens.
- Marinko Spasojevic uses MudBlazor to work with a product detail page.
- Khalid Abuhakmeh adds Svelte to ASP.NET Core projects.
🥅 The .NET platform
- Andrew Lock fixes a build warning when building projects with end-of-life .NET frameworks.
- David Ramel writes about the top feature requests for Visual Studio 2022.
- Scott Hanselman converts his 13-year-old .NET BabySmash app to a self-contained .NET 5 app with the .NET Upgrade Assistant.
- Richard Lander talks about the crossgen2 tool.
⛅ The cloud
- Daniel Krzyczkowski starts a series on Azure Identity.
- Imar Spaanjaars deploys to the Azure App Service.
- The AWS Blog writes about the AWS SDK for .NET’s runtime pipeline and client configuration, and also introduces the AWS Toolkit for Visual Studio support for AWS SSO and Assume Role with MFA.
- GitHub Actions rolls out protections to fight cryptomining.
📔 Languages
- Brian Lagunas compares Task and ValueTask.
- Tom Deseyn works with init accessors and records in C# 9.
🔧 Tools
- Steve Smith adds ImgBot to his GitHub repository.
- Paul DeVito works on .NET Core integration tests using a SQL Server database in Docker.
- Jay Krishna Reddy uses CQRS with MediatR in .NET 5.
- ErikEJ uses Entity Framework Core with Azure Managed Identity, App Service/Functions, and Azure SQL DB.
- David Hayden works with Orchard Core, .NET 5, and C# 9.
- Auth0 introduces a new CLI.
- Khalid Abuhakmeh fixes .NET ICU build issues in GitHub Actions.
📱 Xamarin
- Rakeshkumar Desai gets started with .NET MAUI.
- Almir Vuk talks to David Ortinau about .NET MAUI.
🏗 Design, testing, and best practices
- Derek Comartin asks: do microservices require containers, Docker, or Kubernetes?
- Scott Hannen writes about the Partial/Optional Object Population (POOP) anti-pattern. (Finally, a blog post suitable for both me and my 3-year-old.)
- Adam Storr creates and manipulates mock anonymous data for unit tests.
🎤 Podcasts
- The .NET Core Podcast talks about libvlcsharp and .NET with Martin Finkel.
- The Complete Developer podcast talks about quickly learning new technologies.
- The Productive C# Podcast discusses how to become a fluent C# developer with Codingame.
- The 6-Figure Developer podcast talks about Blazor with Carl Franklin.
- The .NET Rocks podcast talks to Gerald Versluis about going from Xamarin to MAUI.
- The Merge Conflict podcast answers your questions.
- Serverless Chats discusses how serverless fits in to the cyclical nature of the industry.
🎥 Videos
- Visual Studio Toolbox gets started with Jupyter notebooks in VS Code.
- The On .NET Show talks about build automation with NUKE, works through top-level statements in C# 9, and uses the static directive in C#.