DEV Community

Cover image for Setting up a .NET Development Machine in 2020
Jeremy Morgan
Jeremy Morgan

Posted on • Updated on

Setting up a .NET Development Machine in 2020

I recently spilled tea all over my laptop. 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
Enter fullscreen mode Exit fullscreen mode

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

You can download Windows Terminal here.

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

Debian for WSL

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

Docker Desktop for Windows

Now my machine is mostly setup. Oh yeah, I have install Git 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

Then, I install .NET Core.

.NET 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

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

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

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

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

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

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

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

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

Get Linqpad

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.

Top comments (18)

Collapse
 
danstur profile image
danstur

"And yes I should just use PowerShell to do all of this."
Indeed. A Powershell script together with chocolatey for most of the tools not only means you only have to do this work once, it also makes sure you can't forget anything or misconfigure it.

Chocolatey then also makes it trivial to keep all your tools up to date. Definitely worth the marginally higher effort the first time you set it up.

Collapse
 
asears profile image
Andrew Sears

Great list. I just went through this with my new home-dev PC AND a Macbook Pro, and putting together a bigger list and some cross platform tools. Will try out a couple of these, especially NimbleText!

I would recommend Azure Data Studio, it's a bit more lightweight than SSMS, supports Postgres and notebooks and lives in the familiar Electron / VSCode interface.

Collapse
 
jeremycmorgan profile image
Jeremy Morgan

Thank you! I haven't tried Azure Data Studio yet, but I'll check it out now!

Collapse
 
bjarteao profile image
Bjarte Aune Olsen

Not specifically for coding, but I need Ditto and AutoHotkey as well.

Ditto is a clipboard manager, for all the times you need to copy more than a single string.

AutoHotkey I have set up to have hotkeys for some special characters, like {} and [], that are cumbersome to type on my Norwegian keyboard layout.

Collapse
 
danstur profile image
danstur

Why don't you use a different keyboard layout when coding? I'd go insane if I had to program with a German keyboard layout.

It's trivial to set up multiple keyboard layouts under Windows and you can switch between them with a single keyboard shortcut. I'm sure similar things work for Mac and Linux too.

Collapse
 
bjarteao profile image
Bjarte Aune Olsen

Yes, that's probably an easier solution, as it requries less setup.

I have tried coding using US keyboard layout a few times, but I have given up every time, because it requires that I re-learn the location of all special characters on the keyboard. It doesn't seem to be worth the effort, but probably would have been if I had done that from the beginning of my coding career.

Collapse
 
lightmanca profile image
lightmanca

I am surprised you didn't mention good ol Notepad++. It's an editor I can't do without.

Collapse
 
danstur profile image
danstur

Why use notepad++ in 2020 when there's vscode? I can't think of anything that npp could do that vscode can't and that with a soo much better plugin system.

Collapse
 
yerac profile image
Rich • Edited

Honestly, for quick editing of config files I prefer having a super lightweight text editor like Sublime or NPP available. VSC is brilliant, but has higher overhead which can get worse with plugins.

For example, opening a remote config file via VSC takes around 2-3 seconds, Sublime is instant. This is a cold load though, once VSC is running its almost the same

I'd say it also depends on the size and format of the file. I have crashed VSC opening a 30MB JSON file before

Collapse
 
lightmanca profile image
lightmanca

I use notepad ++ for general file editing and viewing. Not coding.

I'll use it as a scratch area where I can hold some code, formatting Json and xml I just want to view. Most of the time it's for text I don't want a file associated with. It's very lightweight for all these features.

I've only used vs code a few times. Maybe it would suit my needs. But key thing here is I rarely save the data I put in np++. It's just a scratch area, where I can format results from various web api calls and store other things I need for temporary bits of time.

Thread Thread
 
jeremycmorgan profile image
Jeremy Morgan

The only thing I don't like about VS code is how it likes to be tied to a folder or project. With something like Notepad++ or Sublime you can just open text files spread all over your hard drive. It's a very minor thing and nowhere near a blocker but it feels kind of weird from a UI standpoint. Other than that I love it.

Collapse
 
bjarteao profile image
Bjarte Aune Olsen

VSCode takes ages to open, I would never use that as the default editor of txt or json files. That's where Notepad++ shines.

Collapse
 
nicknnator profile image
Nick James

Great write up! There is always so much time between new machines for me that I always forget the specifics (the magic) that I had to perform to get certain things to work.

Anyone have any advice for setting up an Oracle ODP.Net for Visual Studio environment? I can never seem to get Oracle right on the first try.
Thanks,
Nick

Collapse
 
jetersen profile image
Joseph Petersen • Edited

Have a look at my dotfiles :)

github.com/casz/dotfiles

I customized PowerShell so it behaves much like I used to do zsh or fish setups.

Collapse
 
ajimerasrinivas profile image
Srinivas Ajimera

Impressive blog with lovely information. Really very useful article for us thanks for sharing such a wonderful blog.

espirittech.com/dot-net-applicatio...

Collapse
 
ucavalcante profile image
Ulisses Cavalcante

Basically the same setup as me, i only add angular cli throught npm and angular extensions in vscode, and tks for LinqPad tip i will try that.

Collapse
 
meligy profile image
Meligy

Glad to see I'm not the only one who actually likes kdiff!

Collapse
 
tyrionlann62154 profile image
tyrion lannister

Useful Information. Thanks for sharing about dot net application development