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

Setting up a .NET Development Machine in 2020

jeremycmorgan profile image Jeremy Morgan ・Updated on ・4 min read

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

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.

Discussion

pic
Editor guide
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
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
wabbbit profile image
Rich

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 Author

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
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
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 Author

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

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
casz profile image
Joseph Petersen

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
meligy profile image
Meligy

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

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.