Setting up a .NET Development Machine in 2020
Tags: webdev, dotnet, programming, beginners
Published: 2020-01-04 23:14:16

---
title: Setting up a .NET Development Machine in 2020
published: true
description: All the tools you need to set up an effective developer environment in 2020.
tags: webdev, dotnet, programming,beginners
cover_image: https://thepracticaldev.s3.amazonaws.com/i/y5m4xx2uqiohe5lj46t4.jpg
---
I recently [spilled tea all over my laptop](https://twitter.com/JeremyCMorgan/status/1213297284818931712). Not proud of it. It's a laptop I'm going to be using for a presentation next week, and I had no other Windows laptops in the house. So I hit Amazon and grabbed a new one to be overnighted here and get set up.   

I needed to get a fully functional .NET development machine up and running. 
  
As I was doing this I thought it might be interesting to share how it's set up, and gather some feedback about what YOU use for a .NET Developer machine setup. Leave a comment. 

And yes I should just use PowerShell to do all of this. 

## System Setup

So I have my new system, and obviously I want to update it to the latest version of Windows 10, and all updates. This pulls in the .NET Framework.

The next step is getting WSL. I've been using this so much lately I can't live without it. 

**Enable Windows System for Linux** 
To enable it you just run the following in a PowerShell prompt:   

```
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
```
Then the next thing I can't live without. Windows Terminal. I have this set up so I can run a Powershell, Windows Command Prompt, and Linux command prompt all from the same application.   
  
If you're a heavy command-line user/scripter it's a must-have.   
  
![Windows Terminal](https://thepracticaldev.s3.amazonaws.com/i/vrk7aa9wsgzmvtctau3x.jpg)

You can download [Windows Terminal here](https://www.microsoft.com/en-us/p/windows-terminal-preview/9n0dx20hk701?activetab=pivot:overviewtab). 

Next, I want to do Linuxy things on my file system, so I add on Debian for WSL:

[Debian for WSL](https://www.microsoft.com/en-us/p/debian/9msvkqc78pk6?rtc=1&activetab=pivot:overviewtab)

I also like to do container stuff. It's helpful to build containers and test stuff on your local machine. 

[Docker Desktop for Windows](https://download.docker.com/win/stable/Docker%20Desktop%20Installer.exe)

Now my machine is mostly setup. Oh yeah, I have [install Git](https://git-scm.com/download/win) as well. Can't develop without it. 

### Dotnet Stuff

So now I have to grab some .NET Stuff. Windows 10 comes with .NET 4.x by default, but I like to grab the old 3.5 framework for older tools and testing older apps. 

[.NET Framework 3.5](https://www.microsoft.com/en-us/download/confirmation.aspx?id=21)

Then, I install .NET Core. 

[.NET Core 3.1](https://dotnet.microsoft.com/download/dotnet-core/3.1)

Here I will grab the: 

- Dotnet SDK
- Dotnet Runtime

This way I can develop and test .NET Core applications on this machine. 


### IDEs

Now I need some IDES. I install Visual Studio Code. These days I do about 90% of my development in it, as well as a bunch of text editing. 

[Visual Studio Code](https://code.visualstudio.com) 

At a minimum I grab these extensions: 

- Remote WSL Extension
- Docker Extension
- C# Extension

For the big stuff, I still like to use Visual Studio 2019. The debugging, test and other tools are hard to beat. If you're building enterprise applications it's still a necessity. 

[Visual Studio 2019](https://visualstudio.microsoft.com/vs/)


## Other Tools

Here are some other tools I install to help development. Since I do web stuff, I find having NodeJS installed is really nice. I can use it in conjunction with Visual Studio, or use one-off apps to do transforms on things. Plus it helps for testing. 

[NodeJS](https://nodejs.org/en/)

To access databases it's always nice to have SSMS on your local machine. So I grab that. I don't always set up a SQL server on my machine, but it's helped in the past. I at least want SSMS on here. 

[SQL Server Management Studio 18.4](https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15)

I've been using SQLite for a ton of stuff lately. It's great for one-off projects and small databases. If you have a gnarly CSV file and you want to extract data with SQL queries, it's indispensable:

[DB Browser for SQL Lite](https://sqlitebrowser.org)

## Weird little utilities

Here are some weird little utilities I add on that I can't live without. 

Curl is an awesome utility for debugging web pages or pulling down files from the internet. Super useful

[Get Curl](https://curl.haxx.se/windows/)

Nimbletext - So many cool things you can do with this app. I liked it so much I bought the paid version. If you do a lot of text manipulation it's worth its weight in gold. Those CSVs? You can turn them into SQL statements or C# code in minutes with this tool:

[Get NimbleText](https://nimbletext.com)

Kdiff is my diff tool of choice. Excellent for comparing files and I use this as my diff tool with Git. Saves you tons of time. 

[Get Kdiff3](http://kdiff3.sourceforge.net)

Then there's Linqpad. You can build LINQ queries without it, but you won't want to after using it. 

[Get Linqpad](https://www.linqpad.net)


### Conclusion

So now with all this installed and configured I'm rocking and rolling. Let me know what you think of this setup. Anything I missed? Leave a comment.