The set of C # tools that a developer uses can vary greatly depending on the specifics of the task: developing a site, application, service, or creating a library. The choice of tools is also influenced by the type of operating system in which the development takes place. There are conditionally universal ones – for different operating systems, there are those that are suitable only for one system, and for another one will have to look for an alternative tool.
At Aeroclub IT we develop web services and MVC applications for TravelTech. The company’s clients are corporations with tens of thousands of employees who, before quarantine, organized 50 thousand business trips a month. One of our tasks is to develop services that maintain a high level of service. Including through automation and digitalization of processes. For example, a robot that accepts and analyzes incoming mail messages and automatically converts them into formalized applications for an agency – a job that previously had to be done manually.
Our other product is “corporate hotel rating”. This is a service that collects reviews on hotels among employees of one company, analyzes them and, based on this, compiles and sets up customized recommendations for employees of this client company. Most applications are created for Windows.
Usually, I simultaneously supervise the work of five projects at once, so the lion’s share of the time is taken up by organizational issues, process management, distribution of tasks, and control over their implementation. No more than 10% of the time is left for development. Therefore, when choosing tools for development, I, first of all, give preference to those of them that allows you to save resources as much as possible – time and effort. These can be the most basic tools. I will consider the most commonly used ones, they are all free:
MS Visual Studio Community
MS Visual Studio Community is a free version, but the functionality is quite enough for productive work in small teams of 5-7 people.
Visual Studio Code
Visual Studio Code is used less often, primarily for quick viewing of large projects on weak machines (on a laptop, for example). There is support for IntelliSense, there are a huge variety of extensions for C #, Web development, Git, and so on. But even with this wide functionality, it remains fairly lightweight.
dotPeek
dotPeek is a great tool from Jetbrains. Allows you to decompile .net assemblies, can be useful for examining external libraries. In some cases, it helps to determine which version of the assembly is on the server.
Consider a situation that has happened several times in our company. The developer made changes to the ASP.MVC application and released a new version release (collected the release branch and published the changes through TeamCity). However, after the release, some users did not see the change. It was necessary to find the error and fix it so that all users had access to the updated version.
First, we checked for errors in the publication logs – there were none. The application sits behind a load balancer and is deployed across multiple servers. After viewing the folders with the application on all servers, the cause of the error was found. If all assemblies in the application were signed, it would be possible to identify the assembly by version or alternative through parsing the dll content in the dotPeek application. Actually, for this, such a tool is needed: in two clicks it helps to determine the contents of the assembly and not waste a lot of time on it.
regex101.com
regex101.com is a must-have utility for debugging Regex templates. Allows you to understand why a particular template does not work, get help on special characters. For example, there is a text from which you need to get e-mail addresses – a string with the @ special character and a domain designation, this requires a Ragex template that extracts and reads these characters.
cmder.net
cmder.net is a very convenient console emulator with wide customization capabilities. Using the standard Windows console is very inconvenient, from controlling the highlighting to inserting values. Therefore, for several years in a row, the team and I have successfully used cmder for these purposes. Currently, it has a very serious competitor in the face of Terminal Windows.
LinqPad
LinqPad is a small free program that allows you to quickly execute any piece of code, debug a query via Linq to various data sources. This tool saves you a lot of time. For example, you open a large application and you see a piece of code that is questionable. You can go several ways to debug it:
- clean the main application from bugs;
- write a test in the main application and test the operation of the array, which contains a piece of code;
- create a new project and copy a piece of code there;
- copy a piece of code to LInqPad.
The fastest way is the last one, it is also the most convenient, especially if you need access to the database.
WinDbg
WinDbg is a powerful application debugger. Let’s assume that the application periodically crashes while it is running. The server can be configured to create a dump file when the application crashes. This file can be analyzed using various tools, both free and paid, including Visual Studio and WinDbg. The latter has not the simplest interface, but it is worth trying it in practice. At least to broaden your horizons.
Process monitor
Process monitor is an application that allows you to monitor what is happening in the system at a given time. What files the application uses, what it writes to the registry, what processes it launches. Process monitor allows you to analyze all these aspects. In some cases, this is simply an irreplaceable thing.
Using simple utilities to optimize work is a great solution in a situation where there is no time for independent development, but such a need exists. This particular list is compiled on the basis of 10 years of experience in active development. Of course, in the process of work, each developer forms his own set of favorite tools. But since all the utilities listed in my list are free, they can become a basic set, at least for a novice developer.