Fons Sonnemans 2019 Development Tools List

By Fons Sonnemans, 20-nov-2019

Many years ago Scott Hanselman wrote the famous Scott Hanselman Ultimate Tools List post. Now it is time to write my own list because there are new tools. I'm an App developer more than a Web developer so I use different tools. I write mainly XAML (UWP and WPF) apps and only occasionally an ASP.NET website. 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#, XAML, ASP.NET and SQL). I write my own training material so I need the experience. I have about 40 Windows apps in the Store, some are very popular. The apps have almost 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 2019. I use it for coding (mainly C# but occasionally also JavaScript and TypeScript), debugging and XAML/HTML/CSS editing. I think 75% 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. This tool used to be a paid app shipped in Microsoft Expression Studio in the good old Silverlight days. It is now a free download. I wish it was Open Source. I would love to add some extra features to it.
  • 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.
  • 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.
  • PowerRename Power Toy is a Windows Shell Extension for advanced bulk renaming using search and replace or regular expressions. PowerRename allows simple search and replace or more advanced regular expression matching.
  • 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.
  • Google Chrome and Edge are my favorite browsers. I use Edge based on Chromium which is a smart move from Microsoft. I read PDF files in Chrome, no need to install Adobe Acrobat.
  • 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.
  • 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. 
  • 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.
  • Windows Application Driver (WinAppDriver) is a service to support Selenium-like UI Test Automation on Windows Applications. You can write Unit Tests to test the UI of your desktop apps (UWP, WPF, Windows Forms, etc).
  • Try-Convert is a sample tool showing how to build a global tool and also helps you convert projects to .NET Core. The future is .NET Core. 
  • 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.

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. 
  • Microsoft.CodeAnalysis.FxCopAnalyzers Microsoft recommended code quality rules and .NET API usage rules, including the most important FxCop rules, implemented as analyzers using the .NET Compiler Platform (Roslyn). These analyzers check your code for security, performance, and design issues, among others. 
  • 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. 
  • Web Essentials - Essential tools for writing Web (in my case ASP.NET) apps.
  • XAML Styler is a visual studio extension, which 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.
  • Visual Studio IntelliCode is a set of AI-assisted capabilities that improve developer productivity with features like contextual IntelliSense, argument completion, code formatting, and style rule inference.
  • Concurrency Visualizer for Visual Studio 2017 Visualizes execution history and profiles applications. I hope a VS2019 version will be published soon.
  • Disasmo: VS2019 Add-in. 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.

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 apps for Windows 10. It is open source and has great documentation. You can also preview the capabilities of the toolkit by isntalling the Windows Community Toolkit Sample App. I use it in almost all of my UWP apps.
  • Microsoft.UI.Xaml (aka WinUI) - 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. 
  • 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.Wpf  - Blend Behaviors, Actions and Triggers for WPF, open source.
  • WindowsStateTriggers and AdaptiveTriggerLibrar - 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. 
  • 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.  

Closure

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

Fons

Leave a Comment

Leave a Comment
Name
Comment
7 + 4 =

0 Comments

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.