Fons Sonnemans 2023 Development Tools List

By Fons Sonnemans, posted on
5107 Views

Many years ago Scott Hanselman wrote the famous Scott Hanselman Ultimate Tools List post. In 2019 I wrote my own list, now it is time for an update because there are new tools I use. I'm a Windows App developer more than a Web developer so I use different tools. I write mainly XAML (UWP, WPF, WinUI and UnoPlatform) apps and only occasionally an ASP.NET MVC, WebAPI or Blazor WASM projects. My code is written in C#. I create them because it is fun to do and it helps me to train my own skills. I use this experience for my trainings (C#XAMLASP.NET and SQL). I write my own training material so I need the experience. I have developed about 50 Windows (and Windows Phone) apps, some are very popular. The apps have more than 5 million downloads and daily thousands of players. Most of my apps are free but there are Ads in it to generate some revenue.

Software

  • Visual Studio is my favorite IDE, version 2022. I use it for coding (mainly C# but occasionally also JavaScript and TypeScript), debugging and XAML/HTML/CSS editing. I think 85% of my development time is with Visual Studio.
  • Blend for Visual Studio is installed with Visual Studio. I use it for designing the XAML of my UWP and WPF apps. Compared to Visual Studio, Blend has a better Assets panel, Resource management, Data management, Animations, States and Templating & Styling editing. Most developers don't use it and that is a pitty. You should give it a try. You can write XAML way better and faster with Blend.
  • Microsoft Expression Design is a great tool for creative professionals and developers who want to build graphics for application user interfaces, the web, or any other medium. It is an alternative for Adobe Illustrator. I use it for my graphic assets (logo's, images, paths) in my apps. It is a vector drawing tool which you can use to export your graphics to XAML paths. It is really nice.
  • Microsoft Expression Encoder is an advanced application for bringing your edited video project to the web for high-quality playback. I use it to edit app promo video's. I record the videos using the Xbox Game Bar.
  • Paint.NET is great for image and photo editing. You can download it or install it from the Microsoft Store.
  • 7-Zip - The best app to create or unpack archives (zip, rar, etc). Very fast, free and open source.
  • Notepad++ is a free (as in “free speech” and also as in “free beer”) source code editor and Notepad replacement that supports several languages. 
  • FreeFileSync FreeFileSync is a folder comparison and synchronization software that creates and manages backup copies of all your important files. Instead of copying every file every time, FreeFileSync determines the differences between a source and a target folder and transfers only the minimum amount of data needed. I use it to keep my desktop and laptops in sync. 
  • ZoomIt is a screen zoom and annotation tool for technical presentations that include application demonstrations. I use it a lot in my trainings and presentations.
  • .NET Upgrade Assistant The .NET Upgrade Assistant is a .NET global tool that helps you incrementally upgrade your .NET Framework-based applications. Take advantage of performance gains, deployment flexibility, and innovation by upgrading to the modern .NET (Core) platform.
  • Character Map UWP is a modern, native UWP replacement for the Win32 Character Map and Windows Font Viewer with flawless high DPI and touch support.
  • WinUI 2 Gallery app demonstrates all of the Xaml and Windows UI library controls available to make a Fluent Windows 10 app.
  • WinUI 3 Gallery app demonstrates all of the Windows UI 3 library controls and styles available to make a WinUI 3 app with the Windows App SDK.
  • Fluent XAML Theme Editor is a design development tool you can use to create custom themes for the Windows Universal Platform. This tool also helps with the development flow by generating and exporting your chosen theme to a XAML markup resource dictionary.This tool and it's source are public on GitHub.
  • XAML Diff Is a tool which generates the UWP Visual State Setters using a diff analysis of your named elements in your XAML. I wrote it myself and published it in the Microsoft Store. I wrote a blog post about it last year. I hope you like it. I find it very useful. 
  • Windows Community Toolkit Sample App. The Windows Community Toolkit is a collection of helpers, extensions, and custom controls. It simplifies and demonstrates common .NET developer tasks building UWP and WinUI 3 apps for Windows 10 and Windows 11. The toolkit is part of the .NET Foundation and available on GitHub at http://aka.ms/windowstoolkit
  • MVVM Toolkit Sample App. The CommunityToolkit.Mvvm package (aka MVVM Toolkit, formerly named Microsoft.Toolkit.Mvvm) is a modern, fast, and modular MVVM library. It is part of the .NET Community Toolkit and is built to be platform and runtime independent, simple to pick-up and use, à la carte, and providing a lean and performant reference implementation for all basic MVVM building blocks. The MVVM Toolkit is maintained and published by Microsoft, and part of the .NET Foundation. It is also used by several first party applications that are built into Windows, such as the Microsoft Store. 
  • Microsoft App Installer for Windows 10 makes sideloading Windows 10 apps easy: Just double-click the app package, and you won't have to run PowerShell to install apps. App Installer presents the package information like app name, publisher, version, display logo, and the capabilities requested by the app. Get right into the app, no hassles--and if installation doesn't work, the error messages were designed to help you fix the problem. Windows Package Manager is supported through App Installer starting on Windows 10 1809.
  • PWABuilder enables developers to quickly and easily to generate store uploadable packages for the Microsoft, Google Play, and iOS App stores.
  • Microsoft Office is great and I use it a lot. I use PowerPoint for my slides, OneNote for my notes and Outlook for my mails. I don't like Word but I have no better alternative. Excel is great but I don't have to use it a lot. I love that OneNote syncs all my notes on every computer and my phone.
  • Microsoft To Do.Whether you want to increase your productivity, decrease your stress levels, or just free up some mental space, Microsoft To Do makes it easy to plan your day and manage your life.
  • Microsoft PowerToys is a set of utilities for power users to tune and streamline their Windows experience for greater productivity.
  • Steps Recorder (called Problems Steps Recorder in Windows 7), is a program that helps you troubleshoot a problem on your device by recording the exact steps you took when the problem occurred. You can then send this record to a support professional to help them diagnose the problem. It is already installed on your Windows computer. Just hit Windows+R and type PSR. I wish all my users would use it to report problems to me.
  • NuGet Explorer allows browsing NuGet packages from an online feed and viewing contents of the packages. NuGet is a package management tool in Visual Studio. It is open source and setup by Oren Novotny.
  • Audacity is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems. I use it for editing the sounds in my games.
  • Postman is a collaboration platform for Web API (REST & HTTP) development. Postman's features simplify each step of building an API and streamline collaboration so you can create better APIs - faster.
  • Fiddler is the easy, clean, and powerful debugging proxy for checking out HTTP between here and there. It even supports sniffing SSL traffic.
  • Rufus creates bootable USB drives the easy way.
  • GitHub is the place where I store my repositories. I use GitHub Desktop, Git Extensions and Sourcetree as my git clients.
  • SQL Server Management Studio (SSMS) - SQL Server Management Studio (SSMS) is an integrated environment for managing any SQL infrastructure, from SQL Server to Azure SQL Database.
  • SQL Server Data Tools (SSDT) is a modern development tool for building SQL Server relational databases, Azure SQL databases, Analysis Services (AS) data models, Integration Services (IS) packages, and Reporting Services (RS) reports. With SSDT, you can design and deploy any SQL Server content type with the same ease as you would develop an application in Visual Studio. It is an individual component inside the Visual Studio Installer.
  • WhatsApp from Meta is a 100% free messaging app. It’s used by over 2B people in more than 180 countries. It’s simple, reliable, and private, so you can easily keep in touch with your friends and family. 
  • ExplorerPatcher is an Open Source portable executable that lets you customize the Windows 11 Start Menu, Taskbar, System Tray, File Explorer, and more.

Analyzers

Analyzers where added to Visual Studio 2015. I love this technique and here is a list of analyzers which I use a lot.

  • ClrHeapAllocationAnalyzer - Roslyn based C# heap allocation diagnostic analyzer that can detect explicit and many implicit allocations like boxing, display classes (aka closures), implicit delegate creations, etc. 
  • ReflectionIT Analyzer - I wrote this analyzer myself. It contains a few analyzers and fixes of things I did wrong in my code. Now I can quickly find and fix them. 
  • ErrorProne.NET.CoreAnalyzers and ErrorProne.NET.Structs and is a set of Roslyn-based analyzers that will help you to write correct code. The idea is similar to Google's but instead of Java, the analyzers are focusing on correctness (and, maybe, performance) of C# programs. You might want to set error_prone.large_struct_threshold to a value below the default of 24.
  • WpfAnalyzers Roslyn analyzers for WPF.
  • Meziantou.Analyzer A Roslyn analyzer to enforce some good practices in C#.
  • Rapid XAML Toolkit Tools to accelerate XAML app development. It is even extendable.
  • Security Code Scan Detects various security vulnerability patterns: SQL Injection, Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF), XML eXternal Entity Injection (XXE), etc.

Visual Studio Extensions

  • ILSpy - Integrates the ILSpy decompiler into Visual Studio. 
  • GitHub Copilot provides autocomplete-style suggestions from an AI pair programmer as you code. You can receive suggestions from GitHub Copilot either by starting to write the code you want to use, or by writing a natural language comment describing what you want the code to do.
  • Uno Platform Solution Templates - Solution templates for Uno Platform enabled projects.
  • Web Essentials - Essential tools for writing Web (in my case ASP.NET) apps. The easiest way to set up Visual Studio 2019 for the ultimate web development experience. Couldn't find a 2022 version but many of the extensions in this package are also available for 2022.
  • XAML Styler - Formats XAML source code by sorting the attributes based on their importance. This tool can help you/your team maintain a better XAML coding style as well as a much better XAML readability.
  • Inlining Analyzers shows if a method call will be inlined by the JIT Compiler. Method calls are highlighted right in the source code and also display the reason for a failed inline as given by the JIT Compiler.
  • EF Core Power Tools - I use it to reverse engineer existing databases to Entity Framewok Core
  • ReswPlus - Advanced Resw File Code Generator for UWP apps. ReswPlus is a Visual Studio extension enriching your existing .resw files. Written by Rudy Huyn
  • Open Command Line - Opens a command line at the root of the project.
  • Concurrency Visualizer for Visual Studio 2022 - Visualizes execution history and profiles applications. 
  • Disasmo - Click on any method to see what ASM JIT will generate for it.
  • Multilingual App Toolkit v4.0 (VS 2017+) helps you localize your Windows and Xamarin Apps by providing file management, translation services, translation editor, and build integration.
  • ReflectionIT.Refactoring - I wrote this extension myself. It contains a few refactorings to speedup my coding.
  • Roslynator - A collection of 500+ analyzers, refactorings and fixes for C#, powered by Roslyn. I don't use it a lot but it is worth to mention.
  • Rainbow Braces - Colorizes matching brace pairs to make it easy to identify them and their scope. Works for curly brackets, parentheses, and square brackets.
  • RunCoverletReport An easy to use visual studio 2022 extension to run coverlet code coverage and then use report generator and show results in visual studio with syntax highlighting. Note: Relies on Coverlet and Report Generator being available. 
  • Fine Code Coverage - Visualize unit test code coverage easily for free in Visual Studio Community Edition (and other editions too)
  • ResourceDictionary with Code-behind - ItemTemplate for an empty, keyed collection of XAML resources with Code-behind which can be used for x:Bind (UWP & WinUI) and EventHandlers (UWP + WinUI + WPF).

NuGet Packages

  • Windows Community Toolkit is a collection of helper functions, custom controls, and app services. It simplifies and demonstrates common developer tasks building UWP and WinAppSdk/WinUI3 apps for Windows 10. It is open source and has great documentation
  • CommunityToolkit.Diagnostics. A set of helper APIs (specifically, Guard and ThrowHelper) that can be used for cleaner, more efficient and less error-prone argument validation and error checking.
  • CommunityToolkit.Mvvm. A fast, modular, platform-agnostic MVVM library, which is the official successor of MvvmLight. It's used extensively in the Microsoft Store and other first party apps.
  • CommunityToolkit.HighPerformance. A collection of helpers for working in high-performance scenarios. 
  • Microsoft.UI.Xaml (aka WinUI2) - This package provides backward-compatible versions of Windows UI features including UWP XAML controls, and Fluent styles and materials. It is part of the Windows UI Library. I use it in all of my UWP apps. The next minor version will also contain the NumberBox control which I proposed. The next major release is WinUI 3.0, it is now already in Alpha. It will allow you to use the UWP controls in .NET (Core/5) as an alternative for WPF. 
  • Microsoft.WindowsAppSDK (aka WinUI3) - The Windows App SDK empowers all Windows Desktop apps with modern Windows UI, APIs, and platform features, including back-compat support.
  • Newtonsoft.Json (aka Json.NET) is a popular high-performance JSON framework for .NET. I use it for all my JSON work. In .NET Core 3 I switched to System.Text.Json.
  • Microsoft.Xaml.Behaviors.Uwp.Managed - Blend Behaviors and Actions for UWP, open source.
  • Microsoft.Xaml.Behaviors.WinUI.Managed - Easily add interactivity to your WinUI apps using XAML Behaviors. Behaviors encapsulate reusable functionalities for elements that can be easily added to your XAML without the need for more imperative code. This is the managed version for C# WinUI3 projects.
  • Microsoft.Xaml.Behaviors.Wpf  - Blend Behaviors, Actions and Triggers for WPF, open source.
  • WindowsStateTriggers and AdaptiveTriggerLibrary - Collections of custom UWP visual state triggers. 
  • PlayFabAllSDK - I use this for leaderboards in my games.
  • ThomasLevesque.WeakEvent - A generic weak event implementation.
  • Nito.AsyncEx - A helper library for the Task-Based Asynchronous Pattern (TAP).
  • Microsoft.AppCenter - I use it to diagnose the Crashes and track Analitycs events of my UWP apps. The quality of the StackTraces is really great.
  • Microsoft.Services.Store.SDK - The Microsoft Store Services SDK includes advertising and engagement frameworks. The best way to generate revenue in my free games.
  • Win2D.uwp - An easy-to-use Windows Runtime API for immediate mode 2D graphics rendering. I use it in some of my UWP apps. 
  • ReportGenerator converts coverage reports generated by coverlet, OpenCover, dotCover, Visual Studio, NCover, Cobertura, JaCoCo, Clover, gcov or lcov into human readable reports in various formats. The reports show the coverage quotas and also visualize which lines of your source code have been covered.
  • Microsoft.EntityFrameworkCore and Dapper - My two favorite ORMs. EF is easy and Dapper is fast. I often use them both in a project.
  • xUnit is a developer testing framework, built to support Test Driven Development, with a design goal of extreme simplicity and alignment with framework features. I use it with xunit.runner.visualstudio which integrates it with the Visual Studio Test Explorer.  
  • bUnit is a testing library for Blazor Components. Its goal is to make it easy to write comprehensive, stable unit tests. 
  • QuickGrid for Blazor is an experimental grid component built by the Blazor team.
  • Datalnet Blazor Components is a Blazor component library. All components are written in C#. It includes the super fast BlGrid.
  • Blazorise is a component library built on top of Blazor with support for multiple CSS frameworks like Bootstrap, Bulma, AntDesign and Material.
  • BlazorStrap Bootstrap 4/5 components for Blazor.
  • MatBlazor Material Design components for Blazor

Closure

I hope this list is useful for you. Especially if you are also an Windows App developer. I will probably write a new one in the future because things will change, as always.

Fons

All postings/content on this blog are provided "AS IS" with no warranties, and confer no rights. All entries in this blog are my opinion and don't necessarily reflect the opinion of my employer or sponsors. The content on this site is licensed under a Creative Commons Attribution By license.

Leave a comment

Blog comments

0 responses