Instead of trying to run heavy and complex apps on an OS that were never designed for, use Windows for work, and then use gaming and your personal life on Linux. Another thing you can do is switch the kind of programming you do, so it's more linux-related, so overtime, you can only have Linux machines. But for the time being, if you're doing windows programming, use a windows machine for work.
Linux
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
Yes, you can develop in .NET on VSCode and the debugger works on Linux too.
There is a Docker version of SQL Server which funnily enough is equivalent to the enterprise version (rather than limited like SQL Express). You can use it for free as long as it's for development purposes only.
There is no SQL Management Studio though.
One option would be to use PostgreSQL instead. Entity Framework makes it almost free to replace the database anyways (unless you are doing some db-specific things).
There are some other minor annoyances or missing features, it might bother you; but depending on how you are used to work, you might not even notice. But, hey! you are on Linux now, you get all the benefits of a UNIX operating system, it will be worth it for sure, right? (Yes, imho)
As for gaming, I only do light gaming so I probably don't count. I use Heroic Launcher and it works wonderfully out of the box 50% of the time, the remaining 50% you can probably make it work as good as on Windows if you are persistent enough.
Oh, and sometimes some games run better on Linux than on Windows, but I would say most of the time they run a bit worse.
If you use a dockerized environment, that will only work better on Linux. .NET8 is AFAIK natively supported on Linux, so there shouldn't be too much of an issue apart from the usual clunkyness. Visual Studio will probably be more of a problem. The "easiest" way would probably be to switch to jet brains or vscode. If you are hardstuck on VS for whatever reasons, you probably should be able to do some voodoo with running it in docker and using the container as a remote desktop, but this will be PITA to setup and maintain.
If you can shell out for it, get jetbrains rider. It's just as good (better?) as visual studio for dotnet including the more obscure bits like xamarin etc
If you don't play the latest game titles with DRM you should be good to go on Linux: Steam runs great in a flatpak sandbox.
I don't know how compatible mono is with dotnet. Interestingly, some game launchers need it and protontricks can handle many issues. Have look at protondb. Back to work: Someone needs to confirm whether MSSQL server can be run on Linux, but I am almost sure that you won't be able to run the gui of it. But you can connect to it using DBeaver (Java-based) or a VSCode plugin. As for C# development on Linux, I don't know.
I wish I could switch to Linux at work, too, but standardization of work environments seems to be the problem. I would even consider Ubuntu 22.04 LTS if my employer woul allow it. Last time I asked, time was the real reason. Time savings in the long run, currently don't matter. I will ask later and if they still tell me, it's too risky, I will look elsewhere.
Our dev setup doesn't even have the constraints you have for your work. It is all docker-based with Ubuntu Linux containers. It would run faster on Linux even if we could switch to WSL2. And I would argue, that Linux is more standardized than Windows.
I hope you get your stuff running on Linux; market share needs to go up so that all the managers don't fear it. (:
With the games, make sure that you don't want to play multiplayer games with unsupported anti cheat. They will probably never work on Linux without support from the game developers. See https://areweanticheatyet.com/.
.NET is now fully cross platform. you can absolutely run and debug applications on linux as you would in windows.
However Visual Studio IDE is windows only (theres a mac version but isn’t the same).
You can use vscode + .net development pack.
Personally I use Jetbrains rider (for home and work)
SQL Server has a linux version I believe, but its been years since Ive done an install (for development I run sql server in a container)
.NET is now fully cross platform. you can absolutely run and debug applications on linux as you would in windows.
Correct me if I'm wrong, but isn't this limited to just console apps - as in you can't yet run GUI apps, unless you're using a cross-platform toolkit like Avalonia, or it's a WinForms app running under Mono?
To be more specific, yeah I think you are correct. The core of .net (hence the old name net core) is cross platform. Theres a lot of other stuff that isn’t (ie WPF won’t work on linux)
~There are alternatives, such as MAUI~
Note that MAUI doesn't officially support Linux.
But there are third party alternatives like Uno Platform or Avalonia UI that do.
woops! good point thanks!
Afaik the only solution to your .net needs would be mono
There's also dotnet (.NET Core) available on most distros which is an open source subset of .NET by Microsoft
See https://fiodar.substack.com/p/differences-between-mono-and-net-core
Neat! Thanks for the link and info.
Lutris can be pretty handy for many things..
I don't have too much exp with these things, but I would suggest (as an IT support person) narrowing down and isolating problems into specifics, like:
- I need dot.net for x thing and I tried y thing and it didn't work.
You'll be able to get better answers. I'm pretty interested in the suggestions, my usual solution is 'find something open source that is not as good but works.'