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.
You can download Windows Terminal here.
Next, I want to do Linuxy things on my file system, so I add on Debian for WSL:
I also like to do container stuff. It's helpful to build containers and test stuff on your local machine.
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.
Then, I install .NET Core.
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.
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.
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.
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:
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
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:
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.
Then there's Linqpad. You can build LINQ queries without it, but you won't want to after using it.
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)
"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.
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.
Thank you! I haven't tried Azure Data Studio yet, but I'll check it out now!
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.
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.
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.
I am surprised you didn't mention good ol Notepad++. It's an editor I can't do without.
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.
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
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.
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.
VSCode takes ages to open, I would never use that as the default editor of txt or json files. That's where Notepad++ shines.
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
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.
Impressive blog with lovely information. Really very useful article for us thanks for sharing such a wonderful blog.
espirittech.com/dot-net-applicatio...
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.
Glad to see I'm not the only one who actually likes kdiff!
Useful Information. Thanks for sharing about dot net application development