10 ms·
Is there somewhere where someone new to the ecosystem can get a simple introduction to all of these different terms and which ones are still relevant today? I l
by lolinder 2y ago
Is there somewhere where someone new to the ecosystem can get a simple introduction to all of these different terms and which ones are still relevant today? I looked into .NET somewhat recently and came away with the apparently mistaken impression that Mono was how .NET did cross-platform. I guess I must have been reading old docs, but I'm pretty sure they were at least semi-official.
Is there good documentation somewhere for getting set up to develop with modern .NET on Linux?
- older 2y agoThis is the official one: https://learn.microsoft.com/en-us/shows/visual-studio-code/getting-started-with-csharp-dotnet-in-vs-code-official-beginner-guide https://learn.microsoft.com/en-us/shows/visual-studio-code/g...
- Blot2882 2y agoMono was, but newer versions of .NET run on Linux and Mac. You can install at the link below, and then making a project is just `dotnet new console` and run with `dotnet run` https://learn.microsoft.com/en-us/dotnet/core/install/linux https://learn.microsoft.com/en-us/dotnet/core/install/linux
- simion314 2y agoMono implemented the GUI stuff like Windows Forms, do the latest windows cross platform stuff support that? Can you run .Net GUI windows program on linux without Mono but using the latest .Net thing ? I know it was not possible in the past.
- deaddodo 2y ago.net Core doesn't supply WinForms, but WPF is the far more common paradigm for Windows apps now. WPF is supported by projects like Avalonia on Linux. There are also a few other major alternative UI toolkits, more commonly used by cross-platform (vs Windows-exclusive) developers.
- pionar 2y agoYou can use third party libs like Avalonia[1] or Uno[2] [1] https://avaloniaui.net/ https://avaloniaui.net/ [2] https://platform.uno/ https://platform.uno/
- simion314 2y agoSure, nobody wants to write Winforms new applications today My point is about running existing applications on Linux, there are still issues with running .Net GUI stuff under wine and Mono was not a perfect implementation. I read in other comments that the newer .Net cross platform stuff is not a replacement for Mono for running this old applications. (nobody will rewrite them to use the current GUI stuff from MS since are old apps)
- moron4hire 2y agoNo, Microsoft's .NET only supports WinForms on Windows. They do have an official cross platform GUI toolkit in MAUI, but it strangely does not support Linux.
- runevault 2y agoLast I knew it is also considered pretty lackluster. Every time I read up on it it feels like, even beyond the lack of Linux support people just don't care for it. If I was building a cross platform native app with .NET I'd probably use Avalonia right now.
- moomin 2y agoYeah, the took an age delivering it, then it came out and most of the early reports were “It’s still not ready.” and then I think Microsoft just gave up. I think not supporting Linux was a tactical error, though. Some people will put up with a lot for Linux GUI support, and some of those people are the types who can resolve problems with your half-baked GUzi framework.
- 2y ago
- eppp 2y agoNo, they pretty much gave up on winforms when .net core morphed into "the" .net that is cross platform. There are some nice crossplatform gui libs now though.
- LAC-Tech 2y agoWhat are the ones to use in 2024? I used to code informs, it was a great improvement on its successors.
- starik36 2y agoNot really. Winforms have been updated to .net core. And a bunch of handy features to modernize it have been added. I'd say it's the simplest and quickest way to go if you need to bang out a quickie app for Windows only. https://learn.microsoft.com/en-us/dotnet/desktop/winforms/?view=netdesktop-8.0 https://learn.microsoft.com/en-us/dotnet/desktop/winforms/?v...
- glzone1 2y agoIf true this would be huge. I got burned on the whole silverlight, Universal Windows Platform, WPF etc. All these new and improved solutions had all sorts of issues, no designer, no or weaker accessibility stories, bloated, slow etc etc. C# + Winforms would be appealing. Some of the performance with larger datasets in the new solutions (tables etc) was just surprising. I really feel like Microsoft got so distracted chasing phones, tables, touch etc they forget just basic line of business application development which they could and should have owned.
- neonsunset 2y agoYou are expected to use Avalonia or Uno for multi-platform targeting or Gir.Core (GTK4) or one of the many other binding libraries for Linux-specific GUI. Also very easy to throw something together on top of SDL2 with Silk.NET. Practically speaking it is in a much better place than many languages considered by parts of Linux community to be more """linux-oriented""".
- simion314 2y agoMy personal use case is running old GUI apps, I am not planning on writing GUI apps with .Net , MS had the opportunity to open source .Net/Silverlight and make money from tools but they bet on Windows and today most apps are node and javascript, a much inferior platform but MS open things up too late.
- toyg 2y agoThe whole point of .NET-Core was to remove all the (largely desktop-oriented) platform-specific dependencies that tied it to Windows, so you could run server-oriented .net programs on Linux. So no, afaik you can't simply run GUI apps built with .Net on Linux desktops - that's the reason Mono wasn't simply killed, because it covers that niche (which wouldn't even exist, were it not for Mono/Xamarin's efforts back then. But I digress...). Nowadays there are a few other attempts at providing that UI layer.
- dark-star 2y ago.net Core still has Windows Forms thoguh? At least I (for kicks) migrated one of my old .net 4.something projects to .net core and it still works and shows the classic Windows Forms GUI. It's (of course) not portable
- snuxoll 2y ago.Net Core on Windows has support for loading assemblies that reference COM interfaces and the win32 API, along with other things that aren’t supported elsewhere like C++/CLI. That’s why loading System.Windows.Forms still works, it’s not part of .Net 5+, but it can still load the assemblies on Windows (they still use GDI, etc under the hood).
- Kwpolska 2y agoSystem.Windows.Forms _is_ part of .NET 5+ — but only available on Windows.
- qingcharles 2y agoI think this is what you need now... https://dotnet.microsoft.com/en-us/apps/maui https://dotnet.microsoft.com/en-us/apps/maui "Build native, cross-platform desktop and mobile apps all in one framework." I know my buddy uses it to write Android apps on his Mac that interface to an ASP.NET Core web site.
- pests 2y agoI don't think that supports Linux tho
- qingcharles 2y agoI had to check; you're right, no official support for Linux. Windows, macOS, iOS, Android. You can kludge Linux in with hacks.
- aversis_ 2y agoIsn't it just another Xamarin rebrand?
- Kye 2y agoFor historical context: this was before the conclusion of the antitrust case that led Microsoft to start softening its stance toward open source. https://en.wikipedia.org/wiki/United_States_v._Microsoft_Corp https://en.wikipedia.org/wiki/United_States_v._Microsoft_Cor.... This was the same year Antitrust came out: https://en.wikipedia.org/wiki/Antitrust_(film) https://en.wikipedia.org/wiki/Antitrust_(film) Any support for open source or cross-platform stuff was a bulwark against claims of monopoly abuse, but none of it worked well enough to be a true replacement. Mono worked for some purposes, but it was far from the first party support cross-platform .NET gets today. Nowadays it sounds like .NET Core + third-party GUI libraries is the way to go.
- paranoidrobot 2y ago> Nowadays it sounds like .NET Core + third-party GUI libraries is the way to go. For reference for those unfamiliar with the terms: .NET Core was the name given to the cross-platform fork of the .NET runtime. It was forked out of .NET 4.x and dropped support for a lot of things in the first versions. It ran on various distributions of Linux and MacOS. At the same time there were forks of other libraries/frameworks in the .NET ecosystem to have 'Core' variants. Often these were dropping support for legacy parts of their code so that they could run on Core. Later versions of .NET Core brought over support for a many of the things that had been dropped. .NET Core and .NET had stand-alone versions until .NET Core was renamed to . NET and became .NET 5. So, if you want to do the most modern cross-platform C# you would use .NET 9.
- aspeckt112 2y agoGood write up that wonderfully encapsulates how stupid Microsoft’s naming is - you didn’t even mention .NET standard. I love .NET. It’s a great stack, especially for backend web apps. Blazor is a great SPA framework too. But I loathe how Microsoft continue to handle just about everything that isn’t the framework and C# / F#. It’s laughable.
- paranoidrobot 2y agoWell, to be fair .NET Standard wasn't a framework, it was a standards/compatibility label and compilation target. .NET Standard includes various versions of things that MS doesn't even touch. I stopped doing .NET stuff before .NET 5 so I'm not hugely up to date with the latest shenanigans.
- pantalaimon 2y agoIs there a way to build a GUI app with .NET on Linux? Will it be cross-platform?
- sasakrsmanovic2 2y agoYes. https://platform.uno/uno-platform-for-linux/ https://platform.uno/uno-platform-for-linux/
- cultofmetatron 2y ago> Is there a way to build a GUI app with .NET on Linux? yes https://avaloniaui.net/ https://avaloniaui.net/
- deleted 2y ago[deleted]
- fsckboy 2y ago(i hardly know what i'm talking about so somebody else may have a better idea, but i'm here now so) mingw is a GNU's header/library environment (tools too maybe?) to create windows compatible applications. So I'd look into searching mingw .net and/or mingw mono. also, ask your favorite AI, they're good at this type of question so long as it's not up to the minute news
- aspeckt112 2y agoAvalonia. The UI isn't native, is a Skia canvass with drawn controls. But it'll work on basically every OS and it's pretty good. Also, you're not writing JavaScript, so that's a win any day in my book.
- mixmastamyk 2y agoSounds like Flutter?
- register 2y ago
- Buttons840 2y agoIs .NET open-source? Will I find it in an open-source repository?
- deleted 2y ago[deleted]
- sva_ 2y agoSeems so https://github.com/dotnet/dotnet https://github.com/dotnet/dotnet
- hexxington 2y agoThis is the "virtual monorepo", if you want to clone one repo and build the entire SDK product then this is the correct thing to checkout - but development work right now still happens in the separate project repos, of which there are ~20
- NlightNFotis 2y agoYes. https://github.com/dotnet/runtime/ https://github.com/dotnet/runtime/
- deleted 2y ago[deleted]
- WorldMaker 2y agoAlso, the main languages: https://github.com/dotnet/roslyn https://github.com/dotnet/roslyn
- pionar 2y agodot.net is the official starting point. It'll point you to getting setup with .NET dev on Linux. You can either use VSCode or Intellij Rider.
- SideburnsOfDoom 2y ago> I looked into .NET somewhat recently and came away with the apparently mistaken impression that Mono was how .NET did cross-platform. I guess I must have been reading old docs, History here https://en.wikipedia.org/wiki/.NET https://en.wikipedia.org/wiki/.NET .NET Core 1.0 (2016) was the first cross platform prototype. It got good in a release in 2018 or 2019, I even forgot which now. And took over steadily after that. We don't even think about it any more. "which OS is the prod env on" isn't a factor that causes any support worries at all. Getting set up would start at https://dot.net/ https://dot.net/ And the download page, which should show you content for your current OS https://dotnet.microsoft.com/en-us/download https://dotnet.microsoft.com/en-us/download But also other targets are here https://dotnet.microsoft.com/en-us/download/dotnet/8.0 https://dotnet.microsoft.com/en-us/download/dotnet/8.0 You'll want the latest SDK 8.0.x
- hsbauauvhabzb 2y agoYou’re not alone. I would say I’m not ‘new’ and even developed .net 4.5 for a number of years. I’m just as stumped by the naming mess that Microsoft made across the board in that space. Edit: I say 4.5 because I mean the original thick .net which is not dotnet core, which I think is the way to differentiate between versions, but also all the sub libraries like the orm were iirc named the same but did different things. They should have rebadged everything with a new name that didn’t involve a word that is fairly painful to google (‘core’) can be used in development as well as the name of a framework.
- shiroiushi 2y agoI think Microsoft is completely allergic to naming anything with a unique name or term; in fact, it's almost like they pick names that will be hardest to find with a google search.
- notakio 2y agoThis is compounded by their propensity to rename everything at periodic intervals.
- drw85 2y agoIt's even worse, since they dropped the core now and just call it .NET. So searching has become even more of a pain. It's also pretty much a mess, because many things were different between the versions. So let's say you google how to do something and the result could be: - .NET Framework - .NET core 1 - .NET core 2 - .NET core 2.1 - .NET core 3 - .NET 5+ Many times there will be no clear indication what version the result was built on. On stackoverflow, answers sometimes include all versions varieties.
- neonsunset 2y agoGiven current naming scheme, what do you propose?
- 3np 2y agoAs the OP notes, MS use their own fork of Mono for the .NET Core runtime these days. So you're not wrong but they are different codebases these days.
- hizanberg 2y agoThe .NET Core runtime was never a fork of Mono, it’s always been a separate code base.
- 3np 2y agoI never claimed that the .NET Core runtime is a fork of Mono but it certainly contains one: https://github.com/dotnet/runtime/blob/main/src/mono/mono/mini/mini.c https://github.com/dotnet/runtime/blob/main/src/mono/mono/mi...
- YoshiRulz 2y ago> Is there somewhere where someone new to the ecosystem can get a simple introduction to all of these different terms and which ones are still relevant today? Not really. It's legacy cruft all the way down. But the good news is that if you stay on the beaten path, using the latest SDK and targeting the latest Runtime, everything Just WorksTM.
- bmitc 2y agoFor modern .NET, you don't need to know anything about the legacy terms of Mono, .NET Core, .NET Framework, .NET Standard, etc. All you need is .NET 8 SDK. It's fully-cross platform and installs support for both C# and F#. For example, just download .NET 8 SDK on whatever platform, which is usually very easy on most platforms, and then run `dotnet fsi` to get into an F# REPL.
- tomkarho 2y ago> It's fully-cross platform To a point. Making cross platform native desktop apps is still in the hands of 3rd party vendors such as Avalonia and Uno. MAUI was supposed to fix that oversight to a less than stellar results.
- rahkiin 2y agoThat is like saying C is not cross platform because there is not a library for making desktop apps that use native components on all those platforms.
- kuschku 2y ago.NET/C#'s competitor JVM/Kotlin does provide a UI framework (Jetbrains Compose) that runs on iOS, Android, Windows, Mac, Linux, and the web. That's what you have to compare against, and .NET/C# falls flat.
- notpushkin 2y agoJetbrains is a third party vendor here, too.
- kuschku 2y agoA third party vendor for the Kotlin language? Kotlin has replaced Java as C#'s largest competitor, so that's what we should be comparing against.
- Lutger 2y agoAside from following the default 'start here' documentation, there are various timelines made for fun and profit that visualize the full history, for example: https://time.graphics/line/291016 https://time.graphics/line/291016 This is quite overwhelming, but it can still be useful when reading an article about .NET that is either older or refers to history as you can quickly see where in time it is located.
- kqr 2y agoIf you just want to get into .NET (C# or F#) on non-Windows platforms, the latest .NET release (at the time of writing, 8.0) is what you want. The development experience is good these days. For a historic summary of why it used to be a confusing situation (up until maybe 2020), see https://two-wrongs.com/dotnet-on-non-windows-platforms-brief-historic-summary https://two-wrongs.com/dotnet-on-non-windows-platforms-brief... That also has some background on why the Mono project found itself in a weird spot.