I’m about to start a new job working with C#/.NET and will try to practice before I start. How much of a pain is it to do on Linux?
Mono is the best open source free/libre??🤔 implementation of DotNet and CLI specification out there, it’s officially sponsored by M$. DotNet/C# it’s a great technology/platform BUT mostly of its ecosystem is M$/🍎 dependent, and therefore tends to work with it in proprietary environments 😢.
In addition, DotNet cannot be built from source.
As I understand, you can build from source but it’s more complex, or What do you mean?
It is specifically as you point https://github.com/dotnet/source-build
It is WIP and not everything is built from source yet.
These are the same reasons why OpenRA just download the DotNet package and embed it in the AppImage.
To build DotNet, there is no full bootstrapping yet. As result, you cannot build DotNet with, for example, Mono which already supply this first thing.
Nearly all .NET Core repositories require the .NET Core SDK to build. This is a circular dependency, which presents a bootstrapping problem.
Horrible 😨 . Surprising that the community of its developers accepts this. The Open Source Initiative has done a great job brainwashing 🧠 .
https://github.com/dotnet/source-build/issues/1930 Here’s more info about the bootstrapping problem if anyone is interested.
The sequence of commits you’d have to build to get from one to the the other might be prohibitively long, and AFAIK nobody is tracking this. Fortunately we avoid using floating versions in our repos (we commit updated pinned versions into the repo source), so it should be traceable. But I don’t think we have tooling to do that tracing.
It sounds like it might be theoretically possible, but unproven and not at all practical in the current scenario.
You have MonoDevelop and Mono itself.
I would recommend it over main DotNET for GNU/Linux environment and in general.
It is compatible with main DotNet and, in comparison with DotNet, can be built at all from source, making it truly FLOSS.
Edit:
Don’t get confused by some people, Mono is not deprecated nor abandoned, it is even integrating some things from DotNet. As date of today is perfectly maintained.
For simply practicing with C# and .Net you should have no trouble on Linux, but once you begin work it really depends on what version of .NET they’re using at your new job. If it’s modern (>= 5.0, or Core 1 through 3) you shouldn’t have any trouble unless they’re building Windows UI applications, but if it’s .NET Framework things get dicey. Mono doesn’t cover everything in .Net Framework and I would not count on it being a drop in replacement.
It’s impossible for me to use a pure Linux environment for work because we maintain a lot of ASP.NET webforms projects running on .NET 4.5, but on the other hand when I want to use C# for making game projects with Godot or experiment with newer .NET stuff like Blazor there is no friction working with C#/.NET on Linux.
Like @youngbrett@lemmy.ml mentioned, Rider is a fantastic IDE that is available to you if that’s your thing. I use it both on Windows and Linux, preferring it to Visual Studio. Rider is not free, however, and requires a license to use it beyond 30 days.
incredibly easy with modern .net, you just have to make sure to install the dotnet package
JetBrains Rider is a really good cross platform IDE, but you can also use whatever editor you want (and Visual Studio Code is pretty easy to get set up as well)
It works well on Linux, just that you probably want to invest on getting Rider IDE from Jetbrains. I had to drop C# when it come to developing something for Linux and I opt to use C Language for that, not Rust nor DLang, since I also have to be mindful about FFI.