[HN Gopher] .NET 6 Released
___________________________________________________________________
.NET 6 Released
Author : tonicbbleking
Score : 302 points
Date : 2021-11-08 16:30 UTC (6 hours ago)
(HTM) web link (devblogs.microsoft.com)
(TXT) w3m dump (devblogs.microsoft.com)
| gmueckl wrote:
| .NET 6 seems like a pretty good release with a few cool new
| features.
|
| But it's funny how the infographic in the post mentions MAUI for
| desktop development, but the "desktop" keyword in the text is
| referring to the WinForms github repository. I can't think of a
| more concise statement about the state of GUI development on
| .NET. I would really wish for less fragmentation and churn in
| that space.
| ognarb wrote:
| Note that Maui is the name used by an older ui toolkit
| https://mauikit.org/ and you probably should refer the one by
| Microsoft to .Net MAUI to avoid confusion.
| bob1029 wrote:
| My strategy for dealing with Microsoft's regrettable desktop
| GUI roadmap is to use the web as much as possible. .NET has an
| incredible suite of features for pushing functionality to the
| browser. Kestrel is one of the fastest web servers available
| today. Developing directly against the AspNetCore pipeline has
| a bit of a learning curve, but it becomes very intuitive once
| you get over the DI/startup hard bits, and the performance you
| can get with low level middleware is staggering (to me).
|
| There are very few applications that simply cannot work in a
| web browser in 2021. Even accounting for all the inconsistent
| bullshit between browser vendors, you can still arrive at
| something that works as far back as IE6 if you are conservative
| with your footprint.
|
| Do you really need flexbox, webgl2 and GPS navigation for that
| warehouse inventory management application? Does _everything_
| have to live the various app stores? Will your users revolt if
| there isn 't some ceremonial download & install phase of using
| your product?
|
| I would go so far as to argue for deployment of a self-
| contained webservice to the end users that could be accessed
| via any arbitrary localhost browser before succumbing to the
| Microsoft Desktop GUI framework du jour.
| jmnicolas wrote:
| Instead of chasing the next Microsoft fad, I've decided to try
| AvaloniaUI for my next graphical app.
|
| It looks mature enough now, and has a better chance of being
| still useful in 5 years from now than WinUI or MAUI or whatever
| is the latest GUI tech MS wants us to use.
| exyi wrote:
| It still has some rough edges, but I really like it since it
| seems to be only .NET GUI choice compatible with Linux. I'm
| bit sad that MS might suffocate the project with the Multi-
| platform App UI (MAUI) which does not work on Linux :/
| Fortunately, MAUI seems to have much more glitches than
| Avalonia ATM
| DonnyV wrote:
| Same here, I least I know this will consistent across
| platforms.
| yread wrote:
| They just keep recognizing that WinForms is the best. And you
| can still use it
| cm2187 wrote:
| Do they have full support in .net 6? I believe in previous
| version it was a partial/beta implementation. Hardly any
| mention of winform in the announcement.
|
| I am basically stuck on .net 4.8 because of that.
| slownews45 wrote:
| Replace ".NET" with "Windows" maybe?
|
| AS a longtime original VB/Winforms developer - MS lost their
| mind on desktop development and didn't look back.
|
| They chased EVERY fad that could be chased. Silverlight, UPF,
| XAML, WPF, Islands, MAUI. This is one of those things - imagine
| if they'd focused on building an amazing and cross platform
| (ultimately) toolkit with just a basic drag and drop designer?
| Who cares about "styling" your app and all the rest of the
| garbage.
|
| How many lost years and peoplehours?
| TillE wrote:
| Also if you still need to support XP (even back when it was
| still getting patches), forget it, Microsoft has no interest
| in supporting you.
|
| Even if _you_ want to use the latest and greatest UI, your
| customers need to keep up too. Completely unworkable.
| TYPE_FASTER wrote:
| Not only lost productivity, but getting executive buy in to
| invest in WPF was difficult after Silverlight.
|
| Kinda joking, kinda serious, but all the Microsoft UI changes
| in the last 10-15 years have definitely helped enterprise IT
| adopt internal web applications. :)
| spaetzleesser wrote:
| Very true. I used to be a desktop dev but since Windows 8
| MS has convinced me it's better to do web stuff.
| moogly wrote:
| IMO they need to realize the common denominator of all these
| failed and deprecated frameworks is the very thing they've
| desperately clung onto over all these false starts... and
| that is XAML.
|
| Get rid of it.
| bmitc wrote:
| > Replace ".NET" with "Windows" maybe?
|
| There's Uno, Avalonia, Xamarin Forms, and MAUI, all cross-
| platform. I think it's a mess no matter what.
| to11mtm wrote:
| In all fairness, at one point you could actually make sense
| of things.
|
| Unless I'm misremembering, until recently Avalonia was
| still being touted as primarily a replacement for Desktop
| WPF. I was shocked to see they're talking about mobile now
| too. I guess it's somewhat expected.
|
| Uno basically does what MAUI does. The main difference
| being, Uno has been around for a while longer and something
| you've been able to use for some time. I'm pretty sure they
| had usable versions for well over a year before MAUI was
| even announced.
|
| In any case...
|
| Microsoft's UI story is a non-starter until they get back
| to the point that a user can:
|
| - Click new project - Fill out the form - Get a Design
| window, - Drag a 'Textbox' into the design window, - Drag a
| 'Button' into the design window, - Double click on the
| button, get taken into a generated event handler, and the
| user can intuitively put in the right code (i.e. updating
| the viewmodel with 'hello world'.) - Click 'run'
|
| That's the Story that got an untold number of new
| developers -enamored- with VB6, a language that got so
| entrenched Microsoft had a hard time killing it. It brought
| a number of developers into the world of C#, making it easy
| for to write applications used at work that a whole team
| could use. That's actually how I 'eased' into programming
| at my first workplace; I wrote an app with a big ugly panel
| and a bunch of big buttons with labels that would automate
| tasks. Need a variation on a theme? Drag a new button over,
| maybe do some light refactoring, test, publish, tell the
| guys to restart the app. 10-15 minutes tops.
|
| Sure, Eventually I had to go through a spaghetti mess of
| callbacks and crappy generated code, but it was good
| refactoring practice ;). And when I left the company,
| someone else took over the code and now they are a software
| developer too.
| tonyedgecombe wrote:
| This has been their modus operandi forever.
|
| I've got to the point where I don't trust them on any of this
| stuff. I target WinForms and if they ever decide to kill that
| then I'll abandon the platform completely.
|
| >Who cares about "styling" your app and all the rest of the
| garbage.
|
| One of the problems with WPF is the lack of styling of the
| standard controls. It takes a lot of work to ensure your app
| doesn't look like a turd.
| int_19h wrote:
| Why would you want to style standard controls in a desktop
| app? They should look the way they look everywhere else in
| the OS.
| azinman2 wrote:
| Windows has multiple competing standards in the same OS,
| even from their own software distributed with the OS.
| It's embarrassing.
| LarryDarrell wrote:
| I've been using MahApps.Metro[1] and MaterialDesignXAML[2].
| Those two libraries have made me feel like sticking with
| WPF until I retire in 5 to 10 years. I'm constantly getting
| feedback from clients that the applications look so modern.
| It's been a nice selling point as my niche is rewriting
| VBA/VB6 engineering software.
|
| [1]https://mahapps.com/
|
| [2]http://materialdesigninxaml.net/
| FpUser wrote:
| >"They chased EVERY fad that could be chased. Silverlight,
| UPF, XAML, WPF, Islands, MAUI"
|
| Being a wise man I spared myself from this madness long time
| ago;) When I need Windows Desktop App I use Delphi or lately
| Lazarus that can do both Windows and Linux GUI from a single
| source and produce native standalone executables.
| int_19h wrote:
| WinForms is still around, and works as well as it always
| did. That or WPF are still the sanest choices for desktop
| apps in .NET, IMO, so long as you're only targeting
| Windows. And WinForms specifically resembles VCL a lot.
| FpUser wrote:
| I skipped .NET bandwagon for desktop completely.
| Comparatively to Delphi there were exactly zero business
| reasons for me to move my code or use .NET for new apps.
|
| On a technical side there were no gains and numerous
| limitations.
| int_19h wrote:
| On the technical side, the biggest productivity gain is
| from having a garbage collector. Beyond that, language
| features: while C# 1.0 started in a spot very similar to
| Delphi (+GC), it evolved much faster - e.g. getting
| generics in 2005.
|
| But, yes, if you looked at it in 1.x days, it really
| looked a lot like Delphi libraries with Java-like syntax.
| So if you were already using Delphi, there wasn't much
| point.
| spaetzleesser wrote:
| And the crazy thing is that all these frameworks were
| basically incompatible variations of the same thing. Since
| WPF nothing has really gotten better. Just different for no
| good reason.
|
| I will never bet on any new MS desktop development framework
| anymore . It's either WPF or preferably web (even Electron)
| for me.
| orra wrote:
| To be fair to UWP XAML, it's more efficient than WPF.
|
| I don't mean because it's written in C++ instead of C#. The
| render pipeline of WinUI is more efficient. It's really
| interesting, but unfortunately I can't find the technical
| blog I was thinking on.
| spaetzleesser wrote:
| That doesn't explain why they had to roll a new framework
| instead of improving WPF. It may have been ok if they
| provided an upgrade path but since Winforms they haven't
| bothered with that either.
| n8cpdx wrote:
| It's more efficient but much less reliable. Like if you
| change from light to dark mode, there's a 20% chance all
| UWP apps that are open crash.
|
| And as efficient as it is, it still can't resize windows
| without flickering. It's worse than WPF or Win32. And
| there still aren't proper APIs for configuring the
| titlebar area.
|
| I wish they focused on getting their vendor partners to
| make efficient processors, rather than try to get all
| windows developers to rebuild software to run on hobbled
| ARM hardware.
| vb6sp6 wrote:
| are you still doing desktop work? if so, what are you using?
| jekude wrote:
| As a relatively new engineer (~2 years FAANG experience), there
| seems to be a connotation around .NET.
|
| Perhaps this is indicative of the larger Microsoft ecosystem, but
| it feels like my peers at university and in the industry tend to
| stay far away from .NET for personal projects, etc.
|
| Why is this?
| nick_ wrote:
| A lot of people in the industry were turned off of Microsoft.
| Also academics tend to have FOSS-adjacent philosophies. IMO
| this really became a passion/pathology in the 2010s when it
| became viable and quite easy to live M$-free.
|
| Another aspect is that M$ tools are used by millions, it's just
| that there's a selection bias for tried-and-true tool users to
| just quietly make things work. "Blue collar programmer" comes
| to mind. All the leading-edge churn, noise, and fatigue is the
| corner of the industry that generates tons of blog posts and HN
| links.
|
| Most/all of their offerings seemed like legacy software/tools
| once IntelliJ, big JS projects, and SPAs became such a popular
| solution for software development on macOS and Ubuntu.
|
| Now with VS Code, TypeScript, heavy dev in GitHub platform,
| cross-plat .NET, vcpkg, etc... and generally very powerful dev
| tooling, they actually have excellent offerings.
|
| All that said, M$ clearly has a long road ahead of earning back
| good will in "high" tech corner of the industry and Academia.
| UglyToad wrote:
| Perceived cool factor, I think.
|
| Both .NET/C# and Java are the core of Dark Matter Development
| [0]. They're what a huge chunk of developers and enterprise
| actually use but they're not cool and they don't get blogged
| about.
|
| Obviously the history of EEE and Windows only legacy means
| there's a lot of hostility to anything .NET specifically
| amongst a subpopulation of developers. However I don't think it
| sufficiently explains the lack of noise about both Java and C#.
|
| It's a bit of a shame because it would be nice to have more
| startup opportunities in .NET (or Java/Kotlin - rather than
| slow, dynamically typed, error-prone scripting language du-
| jour), there are some but they're a tiny minority.
|
| It's hard not to get caught up in worrying about the future of
| one's favorite language/ecosystem but then I think over time
| the obvious benefits of the ecosystem will win people over, I
| hope.
|
| [0]: https://www.hanselman.com/blog/dark-matter-developers-the-
| un...
| lowbloodsugar wrote:
| Not just "cool factor".
|
| From your linked article: "Where are the dark matter
| developers? Probably getting work done. Maybe using ASP.NET
| 1.1 at a local municipality or small office. Maybe working at
| a bottling plant in Mexico in VB6. Perhaps they are writing
| PHP calendar applications at a large chip manufacturer"
|
| i.e. in Cost Centers not Revenue Centers, which is to say in
| jobs that do not pay well, and their management is trying to
| figure out how to spend less money, not make more money.
| damagednoob wrote:
| > It's a bit of a shame because it would be nice to have more
| startup opportunities in .NET
|
| Even if you ignore the history of companies like MS and
| Oracle what it comes down to is vendor lockin. If there's a
| chance a vendor will pop up in 3 years time with a huge bill,
| why take the risk when there are plenty of free alternatives.
| svick wrote:
| I think there is zero chance of that happening.
|
| MS recently made one tiny decision that was unfriendly to
| open source, it caused a huge outcry and a reversal within
| 48 hours on a weekend. I can't even imagine what the
| reaction would be in your scenario.
|
| Besides, basically everything is open source now and you
| can't put that genie back into the bottle.
| vips7L wrote:
| IMO Java/.NET just don't get blogged about _on this site_. If
| you visit /r/Java, /r/dotnet etc, you'll actually find the
| content about them.
| atraac wrote:
| The issue with /r/dotnet is that most people there are
| almost fanatics. A single bad word about MS or any topic of
| the month like MediatR gets you downvoted to oblivion.
| There's almost no real discussion there.
| magicalhippo wrote:
| Not a new thing. I recall the same fanaticism on big C#
| IRC channels back when .Net 2.0 was in beta.
| ptx wrote:
| One reason might be an awareness that Microsoft will be
| Microsoft and they tend to do things like putting "telemetry"
| in the CLI tools: https://github.com/dotnet/sdk/issues/6145
| elorant wrote:
| Probably because of licensing costs. Take for example SQL
| Server. If you want to use it on a server with more than 128GB
| or RAM you have to get the enterprise version which is licensed
| per core and the cost is in the thousands per each core pair.
| Sure, you get a discount, but still the price is steep.
| jmnicolas wrote:
| Which has nothing to do with .net. I work for a company that
| won't invest a cent in extra software licenses or dev tools
| but all my devs are in .net. For the database I use Postgres.
| jasode wrote:
| _> , but it feels like my peers at university and in the
| industry tend to stay far away from .NET for personal projects,
| etc. Why is this?_
|
| It's leftover industry bias because of Microsoft's long history
| of a _proprietary tech stack that costs money_ to use. Today 's
| Microsoft of promoting open source VSCode doesn't really undo
| the mindshare they lost in the 1990s and 2000s when the
| internet got big. I wrote previous comment about this:
| https://news.ycombinator.com/item?id=20256825
|
| C#/.NET (including WinForms and ASP.NET) was instantly popular
| with corporate enterprises but Microsoft never captured
| emerging startups with their tech stack. E.g. 1990s startups
| like Ebay, Amazon, Google, etc all used Java+MySQL+Linux
| instead of C#+MSSQLServer+MSWinNT. And new high-profile open-
| source projects like Hadoop, Cassandra, Elasticsearch, etc
| chose Java instead of C#. I currently can't think of a famous
| project where the canonical source is C#. I use iText C#
| library but that was ported from Java. That's how it usually
| evolves. A lot of C# libraries were actually Java projects at
| first.
| pleb_nz wrote:
| I can't answer your question directly but I can add that what
| I've noticed is frameworks and language seem to be very
| regionally orientated. I've noticed on some parts Java seems
| popular, other parts .net, and so on. It's quite interesting to
| see differences in job ads across regions globally. In my
| region, .net is used extensively and my friends do tend to use
| it for personal projects.
| Avalaxy wrote:
| Definitely true. The netherlands for example is VERY
| Microsoft oriented. I come across .NET everywhere.
| jekude wrote:
| I think you are correct. A couple things probably at play:
|
| 1) Region (for example, my data point is from Boston)
|
| 2) Framework language choice
| (https://insights.stackoverflow.com/survey/2021)
|
| 3) Ecosystem (i.e. Microsoft vs. Unix)
|
| 4) Experience level (probably)
|
| If anyone has any SF data points I am extremely curious.
| int_19h wrote:
| I once saw a world map annotating the dominant dev stack in
| different regions, and yes, it's absolutely a thing.
| [deleted]
| orthoxerox wrote:
| .NET 6 (or 5, or Core 3.1) is absolutely fine for personal
| projects. The tooling is great, it runs on Windows and Linux,
| the web stack is miles better than Spring Boot.
|
| But if your personal projects are a stepping stone to a
| programming job, then .NET has a monstrous legacy problem. In
| 2002-2007 a lot of code was written using .NET in enterprises:
| it was the best way to write a rich desktop application for
| Windows and ASP.NET WebForms, while terrible, were an okay
| stack for intranet websites, certainly not worse than PHP5
| without Yii or Laravel. And if you were a Microsoft shop, you
| got the best integration with MS SQL Server and (oh Lord)
| BizTalk if you used .Net.
|
| But then Rails and Google Chrome came out and completely
| upended the webapp industry. Microsoft has been playing catch-
| up ever since.
|
| A modern startup could certainly use .NET 6 instead of the
| framework of the month to write their world-shattering program,
| but they won't, because .NET isn't cool. A lot of .NET jobs are
| in stuffy enterprises where you likely won't be paid to write a
| backend to a Svelte SPA in .NET 6, you will be paid to maintain
| an ASP.NET WebForms 2.0 monster that uses WCF to talk to some
| SOAP/XML webservices.
|
| Of course, the same applies to JavaEE, but Java has a second
| leg to stand on: people wrote FOSS in Java back when it was a
| dirty word at Microsoft, so not everything in Java shops is a
| terrible Spring/JavaEE mutant that has to be configured using
| vendor-specific XML.
| oaiey wrote:
| Legacy exists in every company and platform older than some
| years. You either do the business of brownfield jobs or not.
| Every platform has their ugly history .. they just call them
| differently: SOAP/WS, RMI, CORBA, 2to3, PHP4, jQuery,
| AngularJS 1, ... . If a platform does not have history, I
| would be worried that I am riding something which soon is the
| legacy.
|
| Microsoft does not play catchup in the web space. It is in
| the pack for some years already. The stuff they do with
| Blazor is at the upper end of the pack.
|
| .NET, like Java, is not cool. It does not need to. It gets
| the job done without any experiments in a very modern
| platform. Doing a startup with boring tech is a thing.
|
| So in summary: .NET is a very good choice for a beginner or
| converts. It is fresh, you can do solid stuff, do the full
| stack in one platform (web, desktop, apps, games, iot, ML,
| ...) and there are plenty of jobs (greenfield or brownfield).
| dustinmoris wrote:
| .NET is a difficult platform for people to learn programming,
| that's probably why. I've sum'd up everything that I think make
| it quite hard for programming beginners in the article below:
|
| https://dusted.codes/dotnet-for-beginners
| jgilias wrote:
| I can chime in on this one. I think it's very much a 'culture'
| thing.
|
| So, I'm a *nix guy. You know, running Sway WM, using Doom Emacs
| as my daily driver, that sort of a thing. Learned vim to write
| my thesis at night on an armchair where using the mouse was not
| comfortable.
|
| Not long ago I accidentally got involved with a kind of a .NET
| consulting gig. Rather, I got involved as a domain expert to
| help out some SaaS startup dealing with that domain, and it
| just so happened that they were writing their thing in C#.
| Before that I hadn't used C# at all, mainly dealing with Python
| and C++. I liked the language, I thought the tooling on Linux
| was pretty decent. The ecosystem was a bit lacking for the
| domain in question, but it had other nice things going for it.
|
| But there was definitely a bit of a culture clash with the .NET
| guys. As an example, I did my domain thing in a pretty much
| self-contained library. While writing it I needed something
| that would be 'just data' without any additional
| 'functionality' attached to it, so I naturally reached for
| `struct`, given that it exists in the language. The .NET guys
| asked why it was not a `class` instead. See, somewhere deep
| inside they felt that not wrapping everything in a `class` is
| wrong on some fundamental level. Later, I had to touch the rest
| of the codebase a bit. At one point there was something I felt
| was a 'one-line change', that took 12 files to edit. Mostly
| routing calls through different auxiliary classes because
| 'architecture'. And you know, I'm really not trying to diss
| those guys. They were nice, capable, smart, productive, good
| people. It's just that I was very evidently from a different
| 'tribe'.
|
| So, I personally like the direction that .NET is taking. I
| think that this release has very nice things in it. Such as the
| statically linked binaries, and compilation to webassembly. I
| also believe that modern .NET has a nice value proposition in
| being able to use your code across the board in many contexts
| and settings. On top of that, both C# and F# are nice
| languages.
|
| But I won't be looking for .NET jobs, or putting that .NET
| stint on my resume, lest some recruiter gets the wrong ideas!
| svick wrote:
| > While writing it I needed something that would be 'just
| data' without any additional 'functionality' attached to it,
| so I naturally reached for `struct`, given that it exists in
| the language. The .NET guys asked why it was not a `class`
| instead. See, somewhere deep inside they felt that not
| wrapping everything in a `class` is wrong on some fundamental
| level.
|
| The difference between a class and a struct in C# is not the
| same as between a class and a struct in C++. In C#, structs
| can definitely be useful, but also have some gotchas, so
| they're mostly used only in performance-critical parts of the
| code.
|
| If you visit a foreign tribe, I think you should listen to
| the locals, unless you are really certain your way of doing
| things is better in the local context.
| jgilias wrote:
| Yes, of course, I applied 'when in Rome' a lot.
|
| In this case though, the struct usage was completely in
| line with C# documentation regarding what structs are for.
| I wasn't trying to write C++ in C#. But hey, I do agree
| that code should be idiomatic to the particular community
| such that it doesn't feel out of place! In that case the
| struct did become a class.
|
| Edit: Just re-read C# documentation on structs. Yes, it
| absolutely made sense to have a value type there. As in,
| the documentation mentions the use case almost verbatim.
| fabian2k wrote:
| The .NET people were likely right in your case. In C# structs
| are allocated on the stack, that's why you'd use them. Unless
| you have a specific reason you'd generally keep pure data
| objects as classes and not structs.
|
| And there can certainly be a culture clash, there is a bit of
| a tendency towards more complex patterns in the .NET world.
| But you don't have to do that, and MS is quite explicitly
| adding versions with less boilerplate in this release, if you
| prefer that.
| jgilias wrote:
| Just re-read C# documentation and remembered the situation
| more clearly.
|
| Basically, I consciously researched the differences between
| class and struct in C# beforehand. And decided to use
| struct as the 'thing' was a kind of a coordinate that would
| be instantiated a lot for simple coordinate-space
| transformations, so it made sense for it to actually be a
| value type.
|
| I should've been more assertive about it. Well, worst case
| some periodic imports are taking somewhat longer than they
| should.
| lowbloodsugar wrote:
| Even with my personal projects, I am wondering "What am I
| learning?" and "How might this benefit me professionally?"
| Other times I'm thinking "I just want this to work".
|
| I started with C# with 1.0, back when structs inside structs
| didn't serialize properly. I've written iOS apps with Xamarin.
| I am a C# fan. I haven't used it professionally in a decade and
| my last personal project was years ago.
|
| When is C# the right idea? The only time is when the project is
| entirely captured by the Microsoft ecosystem. There are plenty
| of places where this is the case. Windows desktop applications.
| Small business contract work who are still using Windows. Big
| business IT who still use Windows. Opportunities to migrate to
| Azure.
|
| Where is C# the wrong idea? Everywhere else.
|
| Writing for the best monetized mobile market? Swift.
|
| Writing for cross-platform mobile market? Javascript.
|
| Writing for cross-platform desktop market? Javascript. Maybe
| Java if you have a history of it.
|
| Writing for the cloud? Something linux first. Javascript,
| Python. If you want a big GC language, why would you pick C#
| over Java?
|
| AAA games? C++
|
| Not AAA games? Maybe C# with Unity?
|
| In every category where C# is used (outside Microsoft captured
| environments), there is a dominant solution which is not C#.
|
| And that sucks. Because C# is awesome.
| DeWilde wrote:
| In my country and some European states .NET is far more popular
| among devs than Java. Depends mostly on the region and what is
| taught in universities. The two most popular unis in my country
| all use teach .NET in the final years of studies and a lot of
| professors are MS MVP's.
| GiorgioG wrote:
| I've primarily been a .NET Developer (a few stints using
| Java/Python) since I finished college when the original .NET
| first RTM'd (2001). I think today's Microsoft and the Microsoft
| of 20 years ago are very different. Make no mistake about it,
| they're still interested in making money first, but their
| strategy has changed (it had to.) I think that old reputation
| haunts them (and .NET) It's too bad, because it really is a
| great cross-platform framework (at least on the server side.) I
| will often try other languages/frameworks for my side projects
| and I always go back to .NET. Maybe it's because of familiarity
| or because I'm obviously more productive with it than
| Java/JS/TS/Go/Rust/Elixir/Python/etc.
| loudmax wrote:
| In the late 90's and early 2000's Microsoft made a real effort
| to prevent people from being able to choose any operating
| system other than Windows. They've come a very long way since
| then, but they still profit from the enormous amount of
| software infrastructure still being developed today that's
| Windows only. For example, they've made it easy to run native
| Linux applications on Windows but they've made little effort to
| run native Windows applications on Linux. Their old reputation
| still haunts them and not everyone is convinced that they love
| open source and user choice as much as they say.
| ziml77 wrote:
| I think .NET is still seen as if it's Windows-only or Windows-
| first. If it does start being used cross-platform, I think it
| will take a lot more time to get there, especially since Java
| has been working just fine for the same sorts of projects.
|
| And it's an especially hard sell given that it doesn't have a
| good GUI situation. Support for Windows GUIs is back since .NET
| 5, but the cross platform options are weak. It's very possible
| when the MAUI library finally releases that we'll see more
| people deciding to use .NET.
| moogly wrote:
| AIUI, MAUI does not include Linux support. There was a third-
| party effort to get that going, but it's not part of MAUI
| proper, and it looks somewhat moribund.
|
| https://github.com/jsuarezruiz/maui-linux
| atraac wrote:
| > And it's an especially hard sell given that it doesn't have
| a good GUI situation. Support for Windows GUIs is back since
| .NET 5, but the cross platform options are weak. It's very
| possible when the MAUI library finally releases that we'll
| see more people deciding to use .NET.
|
| Avalonia is great and recommended by most people that used
| it. Or do we now only count Microsoft-made solutions and then
| whine that .NET is not open to OSS?
| adamredwoods wrote:
| The package manager is not the best, it may have improved since
| last I used it. Also .Net really needs Visual Studio (not VS
| Code) to unlock its full potential.
| solarkraft wrote:
| VS holds .NET back, IMO. VScode (proprietary version) is less
| powerful (especially on the refactoring side), but does have
| a bunch of nice features.
|
| Rider is the perfect replacement, though. Comes with all the
| features of ReSharper (this is a big deal for many .NET
| workflows, VS may have integrated many of its features, but
| not all of them) and extensions and themes you can actually
| use (IME with VS of the 50% that promise to do what I want
| 90% are broken).
|
| JetBrains just know what they're doing. They're clearly
| prioritizing quality (something the VS team seems to be
| actively working against).
|
| Oh, and it's damn near 100% compatible with VS projects (one
| thing I missed about 2 years ago were live updates of WPF
| XAML, everything else just worked).
| atraac wrote:
| I'm using Rider professionally and it's miles ahead of VS.
| Colleague of mine works on the same project using vscode
| without issues as well. You don't need Visual Studio for
| anything anymore...
| solarkraft wrote:
| History. Microsoft technology used to suck terribly for small-
| time developers. It was always popular in the "enterprise"
| (which also brings with it some extra architectural baggage),
| but if you wanted to ship an app with it to consumers you
| basically couldn't ... until Xamarin, Mono and dotnet core.
| gmaster1440 wrote:
| MAUI was the big release I was looking forward to most with .NET
| 6, appears to be postponed.
| hbcondo714 wrote:
| > .NET MAUI will be released a little later than .NET 6
|
| I wonder when, that could mean 2022
| T-A wrote:
| "We are now targeting early Q2 of 2022 for .NET MAUI GA."
|
| https://devblogs.microsoft.com/dotnet/update-on-dotnet-maui/
| WorldMaker wrote:
| A lot of MAUI components are in .NET 6 they are just still
| marked Experimental/Preview to give everything more time to
| bake. If you want to start with MAUI in .NET 6 it sounds like
| it is as good a time to start as any. The impression given is
| that MAUI is retaining the Experiment/Preview designation in
| .NET 6 not because it isn't "ready" (though that can be argued
| both ways), but most specifically because .NET 6 is an LTS with
| three years of support and MAUI is still moving fast enough
| they aren't ready to commit it to LTS support.
| spaetzleesser wrote:
| No worries. There will be a shiny new successor to MAUI soon
| and MAUI will be all forgotten.
| polskibus wrote:
| I wish they put more effort into round 10 version of C# .
| Features presented will have minimal impact on productivity and
| maintainability.
| int_19h wrote:
| C# is already evolving fast enough that quite a few devs are
| uncomfortable with it. Speaking strictly for myself, I love
| getting new language features faster - but there's a balance to
| strike here for the overall good of the ecosystem. You don't
| want to drive out all the people who can't keep up.
| sedatk wrote:
| I've been a huge proponent of file-scoped namespaces and it's
| in C# 10. I think it'll improve code readability and
| maintainability significantly despite being a seemingly minor
| change. It's also in line with "minimal API" and "top-level
| code" changes. I wrote about it here: https://ssg.dev/a-pledge-
| for-namespace-directives-in-c-15a32...
| ulugbek7 wrote:
| I love C#10 for a few features. The language is developing
| rapidly. And C# is already productive. I would like to see
| fewer features in each release.
| tonicbbleking wrote:
| Discriminated unions is one of those features that everyone
| talks about, but never gets championed. Wish C# 10 already had
| this feature.
| https://github.com/dotnet/csharplang/discussions/2962
| throw868788 wrote:
| Maybe try F#? I know it isn't always an option but if you
| can, especially recently, its been quite productive to work
| in.
| keithnz wrote:
| you can actually do them pretty easily in C# without language
| support anyways.
|
| for instance, the F# example from
| https://fsharpforfunandprofit.com/posts/designing-for-
| correc...
|
| can be done in C# like https://gist.github.com/keithn/ceeeed5
| f7eb567e1b2333747065d1...
|
| almost similar amount of code, however, no exhaustive
| checking. Not that I find that to be much of a problem, but
| it would be nice
| oaiey wrote:
| Static interface members enabling generic math and other cool
| features slipped the C# 10 quality bar. That is why the release
| looks a bit thin.
|
| But honestly, with file scoped namespaces and global usings ...
| there is enough to see.
| eatonphil wrote:
| Is there a mature(!) webview library for .NET so I can build
| cross-platform GUIs with HTML/JS/React but write the backend in
| C#/F# and bundle that whole thing into a single file (not a
| zip/something that gets extracted on run) for every platform?
| abdusco wrote:
| Hopefully with MAUI + BlazorWebview component:
|
| https://devblogs.microsoft.com/dotnet/announcing-net-maui-pr...
|
| Unless it gets rebranded again before it's usable.
| WorldMaker wrote:
| WebView2: https://developer.microsoft.com/en-us/microsoft-
| edge/webview...
|
| For instance, in WPF applications:
| https://docs.microsoft.com/en-us/microsoft-edge/webview2/get...
| eatonphil wrote:
| If it is cross-platform it doesn't seem to be very mature
| cross-platform:
| https://github.com/MicrosoftEdge/WebView2Feedback/issues/645.
| WorldMaker wrote:
| Edge on Linux itself only just exited "beta" status a
| couple weeks back, so yes Linux support on WebView2 is
| behind other platforms and still playing catch up.
| Hopefully should be corrected "any day now". Appreciate the
| link to the tracking bug.
| qwertox wrote:
| For me Hot Reload is the most important feature, which will very
| likely be a reason for me to move a bit from Python over to .NET,
| which I haven't touched for 10 years. Back then I really used it
| a lot (after moving away from OLE/DCOM/ActiveX), in C++, Managed
| C++, C# and IronPython (no GIL!). I absolutely loved it, but it
| was limited to the Microsoft ecosystem.
|
| Yesterday, while randomly googling for "hot reload" I got aware
| of the drama which went down around two weeks ago, when Microsoft
| decided to remove this feature from the release, even after
| including it in the previews.
|
| Here is a good summary
| https://www.youtube.com/watch?v=L9_pzDjw9HQ
| abdusco wrote:
| > In .NET 6, in-memory single file apps have been enabled for
| Windows and macOS. In .NET 5, this deployment type was limited to
| Linux. You can now publish a single-file binary that is both
| deployed and launched as a single file, for all supported OSes.
| Single files apps no longer extract any core runtime assemblies
| to temporary directories.
|
| This is a great! Now I can publish statically linked executables
| and run it everywhere. I don't have to tolerate Golang and its
| quirks just to have cross-compilation and static binaries, even
| though they will be larger in size.
| malkia wrote:
| For an internal tool that reformats our code base, I've used
| that to pack the `dotnet format` (although technically, not
| allowed case, since it's a tool, and need to be run from an
| "sdk" environment). It works for what we use it (whitespace
| formatting, but not for msbuild/analysis - which is clearly
| understood).
|
| One thing though, is that native .dlls are still outside
| (DetoursServices.dll for example in BuildXL). But still pretty
| impressive what it can done. That, and the new embedded .pdb
| (for .NET only, e.g. not native).
|
| I wish "publish" was used more by the place I work for (most of
| the folks would simply Release (F5) and store what's there in
| p4). I've only recently discovered about "publish" and that is
| after haven't worked with .NET for so long...
| jmnicolas wrote:
| Yeah "publish" is magical, I specifically jumped from .net
| 4.8 to 5 just for this feature.
| merb wrote:
| msbuild had publish since at least .net 3.5 (when I started
| to use the platform) it was just a little bit akward to use
| tough. and of course dotnet publish is 1000x better than
| msbuild with it's obscure syntax (which got way better in
| .net5 and 6 with -p: syntax, etc.)
| dsizzle wrote:
| Kind of curious that Microsoft had a feature that was available
| in Linux but not Windows, no?
| exyi wrote:
| Yea, funny :D However, the problem was mostly deploying
| dotnet apps on servers which did not have dotnet installed.
| Windows has .NET installed anyway, so there the problem did
| not really exist
| oaiey wrote:
| .NET (Core) 5 is not installed on Windows. Windows comes
| with .NET Framework 4.x.
|
| I think the user interest was startup times of lambdas and
| containers. Therefore Linux was a priority.
| mrweasel wrote:
| Wait, wait... .Net can build "static linked" executables that
| doesn't require that I install .Net to run? I had no idea, I
| guess it's time to revisit .Net
| abdusco wrote:
| That's exactly what it is. You can even cross-compile for all
| supported platforms. $ dotnet new console
| -n HelloWorld $ dotnet publish --project HelloWorld
| -r osx-arm64 --self-contained -o out -p:PublishTrimmed=true
| $ du -sh out 10M
| kreeben wrote:
| >> Single files apps no longer extract any core runtime
| assemblies to temporary directories
|
| I might be ignorant here but if you're not specifically
| pointing out what version DLL's you want, aren't you in fact
| publishing a dynamically linked executable instead of a
| statically linked one?
|
| Doesn't these single-file apps rely on the GAC?
| sedatk wrote:
| The whole runtime gets included in the binary.
| kingcharles wrote:
| This actually makes sense in 2021 since we have the
| resources to allow things like this. 20 years ago this
| might have seemed insane.
| vidanay wrote:
| 30 years ago we used DOS and DLL Hell was a completely
| unknown concept. We did have to deal with himem.sys
| though.
| justin66 wrote:
| On the contrary, 30 years ago we were using Windows 3.0,
| which is about when dll hell started being a real thing.
|
| (DLL hell _stopped_ being a problem a lot sooner than you
| probably think, too...)
| svick wrote:
| Keep in mind that it's just one option. If you want, you
| can still deploy your app separately from the .Net
| runtime.
|
| Also, to keep the size at least somewhat in check, unused
| parts of the base library are not included in the single-
| file mode.
| ourmandave wrote:
| "Insert floppy disk 435 of 880 and press [Enter] when
| ready..."
| vidanay wrote:
| Invalid media type
|
| Abort, Retry, Fail?
|
| FFFFFFFUUUUUUUUCCCCCCKKKKK!!!!!!
| cm2187 wrote:
| Keeping in mind it's also a double edge sword. TLS
| deprecations alone will ensure your app will die after a
| few years if it doesn't run on an up-to-date CLR.
| BiteCode_dev wrote:
| Does this mean you need one binary per OS so that the
| runtime matches, or do they do some magic so that one
| single binary can run on all Oses ?
| sebastienros wrote:
| You create one binary per OS.
| jonathanlydall wrote:
| You create a single binary which has the runtime and
| dependencies self contained within.
|
| You of course have to choose your target platform for
| this as it makes .exes for Windows, ELFs for Linux, etc.
|
| If you want you can still choose to distribute IL DLLs
| and users then use their already installed dotnet on
| their machine to run them.
| e12e wrote:
| > You of course have to choose your target platform for
| this (...)
|
| https://github.com/jart/cosmopolitan
|
| (but, yeah, you probably want one version per target,
| even if hacks are cool)
| voxic11 wrote:
| There is no GAC.
|
| > .NET Core and .NET 5 and later versions eliminate the
| concept of the global assembly cache (GAC)
| backoncemore wrote:
| Interesting. I haven't worked in .NET for several years
| now, but the GAC was always an absolute headache to deal
| with.
| exyi wrote:
| Thankfully they did not port this hell to Linux
| cm2187 wrote:
| Surely the binaries generated by the JIT still get cached
| somewhere?
| azth wrote:
| You should also be able to do this in Java with jlink.
| vb6sp6 wrote:
| yes but then you have to write your program in java
| kreeben wrote:
| and now you have two problems
| to11mtm wrote:
| Three problems, since POM.XML is probably involved
| somehow.
| azth wrote:
| Yes, arguably a better decision than writing it in golang
| to begin with.
| polskibus wrote:
| What do you mean by golang quirks?
| abdusco wrote:
| No passable debugger, weird typing system, verbose error
| handling, lack of exceptions, generics, syntactic sugar ...
|
| I'm a novice at Golang, and I dislike much of the language,
| except that it's fast and can produce small binaries.
| Thaxll wrote:
| "verbose error handling, lack of exceptions"
|
| Exactly why I prefer Go to Java and C#.
| grumpyprole wrote:
| But Go has no sum types either!
| exyi wrote:
| Understandable, but it's a matter of taste. For people
| who prefer a language with exception, it's good that
| there now exist a viable solution other than sticking to
| a language that might not fit their taste so well.
|
| It seems to me that F# could get a bit more love from HN-
| style nerds. Obviously, it's more similar to C# than
| Golang, but specifically error handling can be done in
| much nicer way using the Result type.
| kbd wrote:
| Is there any reason I should care about .NET today if I'm not
| already in the ecosystem? I've done C# professionally in the
| past, and C# is a good language. I wish Microsoft focused on open
| source and wider industry adoption for C#/.NET sooner so that it
| could have taken some share from Java. Now .NET is finally open
| source but Microsoft is a bad steward of the open source
| ecosystem for .NET, and I certainly wouldn't feel comfortable to
| say to my team "let's do this next project in C#". I don't see
| any particular reason to make my own tools in C# vs anything
| else.
|
| So without already being in an existing Windows-based Microsoft
| shop, is there any reason I should be interested in .NET today?
| a_lost_needle wrote:
| Low/No code solutions are really eating the lunch of where C#
| was useful in large internal apps. I use it because F#, but
| it's getting harder to sell that.
| UglyToad wrote:
| Depends what you're after. The only correct advice for "what to
| do a project in" if you're looking to ship and/or make money is
| "use what you know" so any advice beyond that is heavily
| contextual.
|
| There is no killer feature for .NET I think. That's why it's a
| hard sell. I think its sales pitch is more or less parallel to
| Java (though I prefer C# to Java and VS to IntelliJ).
|
| Do you want a statically typed, extremely fast, cross-platform
| language with a comprehensive standard library and huge
| ecosystem of 3rd party packages with almost unrivalled devX
| (Rider on non-Windows OSes) and streamlined packaging and
| deployment that allows you to scale from single person PoC to
| large team development within the same codebase with no
| additional overhead?
|
| I'd note that it's a bit of a jack-of-all-trades when it comes
| to desktop and ML. The ML.NET package keeps getting better but
| for those areas where there's an obvious standard, e.g. Python
| for ML, you may as well use the standard for that thing. The
| desktop story continues to disappoint and I'd advise people to
| steer clear of desktop unless they want a nasty surprise. But
| for web applications I'd not want to use anything else.
| icey wrote:
| C# is fast and .NET core is cross-platform. It's good for
| games, web, and mobile development. F# is a great functional
| programming language. There are fun tools like SignalR (easy
| websockets), Blazor (write C# and run it in the browser through
| WASM), and LINQ (built right into the language and allows you
| to query objects like a database).
|
| Toplevel programs should make it easier to experiment with C#
| if you're interested. We also have first-class support for C#
| commands in https://ab.bot if you just want to play around with
| the language and make a fun Slack bot or something, although it
| might take us a week or so to get move up to .NET 6.
| kbd wrote:
| > and LINQ
|
| _Shudders_ at memories of coworkers writing giant,
| ridiculously inefficient LINQ queries without understanding
| how it 's actually using the database and what it's doing
| server-side
|
| > Toplevel programs should make it easier to experiment with
| C# if you're interested.
|
| Definitely interested in that small feature :) If I had extra
| time I'd like to see what it takes to brew install dotnet and
| write a simple CLI program. Can .NET deploy a static binary
| nowadays?
| sbelskie wrote:
| > Can .NET deploy a static binary nowadays?
|
| You can bundle everything in a single file but that file
| contains the runtime, so even small Hello World apps are
| 50MB+ last I checked, though there have been some
| improvements recently with trimming and AOT is hopefully
| coming next year with .NET 7.
| kbd wrote:
| Very cool, thanks for answering. Yeah I understand they'd
| have to bundle the runtime so that makes sense. Glad to
| know they're working on improving that use case as well.
| int_19h wrote:
| LINQ is best when used on in-memory object graphs, partly
| for the reasons you brought up, and partly because then
| you're not dealing with weird limitations or deviations
| from how functions normally work etc. For in-memory
| queries, it's basically just a very advanced form of
| sequence comprehensions.
|
| (I also suspect that the vast majority of LINQ code in the
| wild is of that variety, rather than Entity Framework etc.)
| tfigment wrote:
| True of nearly all ORMs really. LINQ on objects basically
| makes C# a very nice functional language. Dapper is
| arguably better for database but then use LINQ in those
| results is very nice.
| mumblemumble wrote:
| I almost wish they hand't wrapped IQueryable and
| IEnumerable under the same branding. I get that there's a
| lot of overlap at the interface level, but, in terms of
| what they're doing under the hood and the effect on how
| you use them, they're really quite very different.
| kbd wrote:
| > True of nearly all ORMs really.
|
| I disagree in a respect. I think with an ORM it's clear
| when you're hitting the database, though it makes it
| _easy_ to write loops over (related) rows ( "n+1
| problem"). I think with LINQ using the same
| syntax/expressions across local and remote operations it
| can be more blurred what's happening.
| Frondo wrote:
| I've spent much of my money-making programming time doing CRUD
| web apps in PHP. Several years ago, when .NET Core was in its
| infancy, I had the chance to try a different language for a
| new/different CRUD web app.
|
| The .NET Core ecosystem was a lot sparser back then but picking
| up the language was actually the most pleasant "learn a new
| language and be productive in it" experience I've ever had, and
| I don't think I'd ever turn away from it now. YMMV, of course,
| depending on how much you like whatever you're writing in now.
| b8 wrote:
| C# is good for game development, building applications with
| sockets or creating small GUI applications. Though I admit that
| I have a bias since C# was the first language that I learned to
| program with. Plus C# has garbage collection and
| multithreading!
| mattferderer wrote:
| * Runs great on Linux in my experience & others
|
| * Great performance -
| https://www.techempower.com/benchmarks/#section=data-r20&hw=...
|
| * Open source - Microsoft has made a lot of missteps but they
| have came a very long way. The bright side is both how far
| they've came & the outcomes of the recent missteps.
|
| * Very productive toolset imo. I focus mostly on web based tech
| though. I really like the syntax & type system.
|
| * Swiss Army Knife in that you can use .NET to do just about
| any type of project - Web (front & back end), mobile, games,
| IoT, desktop, machine learning, etc.
|
| * You can use C# & F# syntax, both very popular (though let's
| all be honest, F# is a 2nd class citizen in .NET but it's got a
| great fan base)
| throw868788 wrote:
| I don't think F# is that second class anymore especially if
| you are developing on Linux/Mac OSX. The more concise
| language/syntax is a big plus when you don't want the heavy
| IDE and want to be cross platform. The VS Code plugin for
| example seems more mature than Omnisharp and while like any
| other Code plugin less flaky than many of the others.
|
| It seems to be keeping up with the broader .NET ecosystem
| pretty well I think -
| (https://devblogs.microsoft.com/dotnet/whats-new-in-
| fsharp-6/). In some ways it is ahead of C# as well so I
| wouldn't say it is behind at all.
| svick wrote:
| I think there's at least one way in which F# is a second-
| class citizen: documentation. The documentation for
| anything in .Net will contain code in C#, but code in F# is
| quite rare.
|
| So if you want to use F#, I think you still need to be able
| to read C# code.
| runevault wrote:
| It might not be full second class but I dunno I'd go all
| the way to first class. For example F# doesn't support the
| source generators feature that came with .NET 5 (unless
| they added it in 6 and I missed it but when I looked at
| that post you linked I didn't recall seeing it).
| rc_hackernews wrote:
| As someone who programs with .NET in their day job...no
| probably, not.
|
| Outside of a few areas related to DDD, event sourcing, and some
| distributed-system frameworks (NServiceBus and MassTransit)
| there's really no killer app for .NET, in my opinion.
|
| The big selling point for .NET now is that it runs on
| Linux...which is not really a selling point in the grand scheme
| of things.
| oaiey wrote:
| ASP.NET Core is an excellent and high-performance general
| purpose web framework.
|
| Blazor is an excellent C# on the browser stack.
|
| And MAUI will target React Native (native controls) and
| Cordova (Blazor on Maui) at the same time ... which is
| extremely powerful. But that is half a year out.
|
| .NET has a lot to offer if you take individual app models of
| it. If you want to stick in one language, it is even a top
| contender.
|
| Linux selling point is already gone. That is standard already
| for 5 years now.
| xupybd wrote:
| F# is the reason I'm investing in .Net. So far it's been an
| amazing developer experience.
|
| For internal admin tools I can throw together a windows form
| app in C# much quicker than any other system I've worked with.
| I'm pretty new to the eco system so to it's amazing how fast
| you can get up to speed.
| magicalhippo wrote:
| > I certainly wouldn't feel comfortable to say to my team
| "let's do this next project in C#".
|
| Could you expand a bit on that?
|
| I used .Net 1.1 and 2.0 for awhile, and coming back to it now
| while deciding the future path for our application.
| wvenable wrote:
| Outside of a few very small stumbles, I don't think that
| Microsoft is a bad steward of open source .NET. Especially if
| you use Java as the alternative example where there were
| decades of Sun/Oracle shenanigans around open source Java.
|
| Microsoft has done an amazing amount of _work_ writing and
| rewriting code to make cross platform open source .NET a real
| thing. All open licensed and developed in the open.
| kbd wrote:
| > Microsoft has done an amazing amount of work writing and
| rewriting code to make cross platform open source .NET a real
| thing. All open licensed and developed in the open.
|
| It's fitting you mention all the work _Microsoft_ has done
| rewriting code. You 're talking about .NET itself but I'm
| talking about the ecosystem, where Microsoft often does take
| others' projects and release their own version (the Windows
| package manager comes to mind), training the community to
| only trust things that come from them. Of course there was
| the recent famous example of Microsoft deleting public code
| so they could feature it in Visual Studio, but this tweet is
| typical of the attitude I've seen from the community: https:/
| /twitter.com/GeoffreyHuntley/status/14540569884432179...
| wvenable wrote:
| This reply doesn't really have anything to do with your
| original comment. If Microsoft is producing a solid
| language / framework in the open and improving their
| product such that 3rd party "light-weight" libraries like
| Nancy are no longer necessary, why is that a bad thing?
|
| In my opinion, while other ecosystems have _exploded_ in
| complexity in recent years, the increasing simplicity and
| batteries-included nature of .NET is an appealing contrast.
|
| That's my answer to your question about why you should be
| interested in .NET if you're not already in the ecosystem.
| atraac wrote:
| > If Microsoft is producing a solid language / framework
| in the open and improving their product such that 3rd
| party "light-weight" libraries like Nancy are no longer
| necessary, why is that a bad thing?
|
| Because they are killing community made solutions by
| reimplementing the same solution and utilizing
| community's habit of favoring only MS software that they
| themselves engraved into that community throughout the
| years, even if original solution was better, thus closing
| the circle. They essentially kill the community around
| .NET themselves because instead of supporting projects
| like Avalonia, they reinvent the wheel(often ineptly) to
| ride on that 'Microsoft ecosystem' wave. The only
| exception to that that I know so far has been Polly that
| they pulled into .NET Core.
| wvenable wrote:
| If it's all open source, why does it matter? My
| node_modules folders are a good example of why having
| thousands of individual open source fiefdoms is not
| always a good thing.
|
| I don't think the Avalonia example is a good one either.
| Nobody talks about why Ruby on Rails doesn't support
| Sintara. In other ecosystems, every project is in
| competition. Why should .NET be singled out.
|
| I think the argument that open source software can't
| compete with Microsoft is total bunk. If the alternative
| is competitive, it can succeed. Dapper has been around
| for over 10 years. Avalonia is "used by >170,000
| companies, including 431 on the Fortune 500 list"
| according to their own website. Xamarin joining Microsoft
| is pretty much why we're talking about .NET 6 right now.
| Microsoft's first party solutions are really very good
| (in house or acquired). This is again why you might
| choose .NET over a more chaotic ecosystem.
| FinalBriefing wrote:
| Probably not.
|
| I've heard the more recent releases of .NET have been pretty
| good, but I don't see any real reason to be interested in it.
| There are already plenty of good options out there.
| T-A wrote:
| MAUI, maybe?
|
| https://github.com/dotnet/maui
| spaetzleesser wrote:
| Based on past experience it's a very very very bad idea to
| rely on anything that MS does in the desktop development
| area. I would be shocked if MAUI wasn't dead in five years.
| mmpdev wrote:
| > System.Linq -- DistinctBy/UnionBy/IntersectBy/ExceptBy
|
| I'm excited by having these built in. I always found it awkward
| to need to do: `.GroupBy(item => item.Property).Select(group =>
| group.First())`.
| osigurdson wrote:
| We recently got through upgrading a large code base from .NET
| framework to .NET core 3.1. It was quite challenging as it seemed
| to touch every corner of .NET including AppDomains, .NET
| remoting, serializing type information, C++ interop which
| requires environment variables to be set in process (that one is
| very obscure), etc, etc.
|
| In any case, the performance results were really outstanding
| (particularly vs Mono) especially given we use C++ for many
| performance sensitive areas already. Looking forward to upgrading
| to .NET 6 in the coming months.
|
| Great work! Congrats to the .NET team!
| Rochus wrote:
| > In any case, the performance results were really outstanding
| (particularly vs Mono)
|
| Interesting. Do you have measurement results? According to my
| measurements the difference is not that big, see
| https://www.quora.com/Is-the-Mono-CLR-really-slower-than-
| Cor..., especially the section Update September 15th.
| manomanomano wrote:
| Java user here. What is a good book/set of resources on getting
| started in .NET/C#, possibly this version 6, without knowing the
| ecosystem beforehand (but with a experience in programming)?
| Thanks!
| tonicbbleking wrote:
| Learn .NET is a great place to start:
| https://dotnet.microsoft.com/learn
| griffiths wrote:
| The official resources and documentation are pretty good.
|
| https://docs.microsoft.com/en-us/aspnet/core/?view=aspnetcor...
| smt88 wrote:
| I learned C#/.NET by jumping into an existing project, so I
| can't answer your question directly.
|
| I can, however, recommend you use Rider as your IDE. It
| includes JetBrains' excellent ReSharper code analysis tool,
| which actually corrects a lot of your generic OO code and will
| automatically rewrite it for you to be more idiomatic (avoiding
| memory and performance issues, for example). Rider knows the
| sharp edges so you can mostly forget about them.
|
| Otherwise it should be very easy for you to pick up. .NET has
| some annoying code organization conventions (lots of
| subprojects, too many folders, etc.) but you can just structure
| your project however makes sense for you and avoid all of that.
| manomanomano wrote:
| Thanks a lot for the suggestions!
| jongalloway2 wrote:
| For high level, you can start at https://dotnet.microsoft.com/
| which has links to learning resources for different topics.
|
| There's also a 40 page e-book ".NET for Java developers" here:
| https://aka.ms/dotnet-forjavadevs
| ulugbek7 wrote:
| Check `C# X Pocket Reference: Instant Help for C# X
| Programmers` by Joseph Albahari and Ben Albahari. I've used
| this book to refresh my knowledge about .NET and C#.
| b8 wrote:
| I'm glad that Openssl 3 and more support for WASM was added. I
| doubt that anyone will use WASM though.
| merb wrote:
| well i hoped it would be easy to publish wasm modules that also
| works outside the browser. I'm not sure if that is possible
| tough.
| mattferderer wrote:
| Why? WASM can be a huge productivity win.
| wcoenen wrote:
| Is it possible to load ".NET Framework" assemblies into ".NET 6"
| applications?
|
| (We have a lot of .NET Framework libraries, shared between
| different applications, and a complex dependency graph between
| them. So I'm wondering if it is possible to migrate away from
| .NET Framework by starting with the executables and working our
| way down the dependency graph.)
| my123 wrote:
| No, you can however have .NET Standard assemblies that can load
| into both .NET (Core) and .NET (old) applications.
|
| Those use a common API subset, and are a stopgap to make
| migration easier.
| geewee wrote:
| Yes if you can migrate them to .netstandard2.0 you can run them
| on both .net framework and the newer core/.net5/6 releases.
| I've just done this exact migration path myself for a legacy
| application
| MaXtreeM wrote:
| Others have said no, but I think you can. The ".NET Framework
| compatibility mode"[0][1] was introduced in netcore2.0 (which
| actually is now quite a long ago, geez), which means that if
| your libraries don't use some windows-specific
| APIs/functionality, like WPF, there is a big chance that you
| can use them just as they are. I have never used my own .NET
| framework library like that but I think have used some 3rd
| party library targeting .NET framework in production.
|
| [0]: https://docs.microsoft.com/en-
| us/dotnet/core/porting/third-p... [1]:
| https://docs.microsoft.com/en-us/dotnet/core/porting/#net-fr...
| SloopJon wrote:
| > Supported for three years as the latest long term support (LTS)
| release.
|
| This is the first thing I look for in these announcements. .NET 6
| is the successor to .NET Core 3.1.
| ziml77 wrote:
| I've been waiting for .NET 6 for the past year for the long
| term support. As much as I wanted to use .NET 5, I figured it
| would be best to only use LTS releases in production.
| AtNightWeCode wrote:
| I never run anything else than LTS in production. The in-
| between versions have basically been beta quality since .NET
| 1-preview.
| metaltyphoon wrote:
| Crazy how bing.com seem to not care for "beta" software :D
| merb wrote:
| not the best idea. because between .net 5 and .net 6 not a
| lot has changed. while 3.1 to 6 is waaaaaaaay more work than
| just 5 / 6 (which prob is just changing the version)
| especially on aspnetcore
| pbreit wrote:
| Three years doesn't seem very "long".
| WorldMaker wrote:
| Indeed, but it seems to be close to the current "industry
| standard" at this point, for instance: Node LTS is 12-months
| support plus 24-months "extended security support". (Three
| years total)
|
| Which is not far from say Ubuntu LTS at five years. (Python
| and Ruby have more confusing security fix policies than
| LTS/stable designations, but both are relatively close to the
| 3-5 year mark for security fixes.)
|
| Definitely not "long" from the perspective of classic
| Enterprise development (or Windows "LTS" lengths), but from
| modern viewpoints it is "long". Interesting how such things
| shift culturally.
| sedatk wrote:
| True, but it requires way less effort to upgrade to a newer
| .NET.
| bajsejohannes wrote:
| Unlike all the preview builds this actually crashed on `dotnet
| run` after upgrading. Luckily a `dotnet clean` fixes it.
|
| Good to finally have an official version!
| runevault wrote:
| Been thinking about switching to Rider (already had the personal
| license for Jetbrains from wanting CLion for Rust) and figured
| .NET 6 would be a good time to try making the switch. With how
| blah VS has been for a while hopefully I'll like the Rider
| experience better (for both c# and f#)
|
| Edit: Though I saw something this morning when I tried to load an
| f# project I made in VS refused to load even though the new ones
| generated with Rider are fine...
| simooooo wrote:
| Rider likes not to stop execution for exceptions like visual
| studio does, but otherwise it's great
| vyrotek wrote:
| I'd love to give Rider a try but I need SQL Projects. VSCode
| and DataStudio both have support for it now so I'm hoping they
| figure out how to bring it into Rider as well.
| keithnz wrote:
| I switched to Rider a few years ago. I really like it and I
| find its Vim emulation a lot lot better than what you can get
| for Visual Studio. Its F# support is ok, but I'd say
| VSCode+Ionide is better. But Rider isn't bad for F# still, and
| it has other tools it brings.
| solarkraft wrote:
| +1 for Rider. It's one of the 2 .NET IDEs I know that don't
| suck terribly (the other being the proprietary version of
| VSCode).
| jcmontx wrote:
| > proprietary version of VSCode
|
| Do you mean Visual Studio? They don't share anything AFAIK
| vopi wrote:
| The binary VScode you install is different than an open
| source build. Microsoft doesn't want OS builds using the
| same package registery and I assume various tooling iirc
| jcmontx wrote:
| Very interesting. I wasn't aware of that.
| kiklion wrote:
| Compare the generated project file between the two.
|
| I noticed for a time that some projects created in rider had a
| different project type than those created in VS which caused
| some issues at my company. Was a simple change to the proj file
| though.
| wsc981 wrote:
| I've been using Rider for a couple of months now for Xamarin
| projects, as Visual Studio was for unknown reasons unbearable
| slow on my iMac - it totally destroyed my workflow and
| productivity.
|
| Rider is not perfect, but in many ways miles above Visual
| Studio.
|
| As Rider doesn't have any Forms editor build-in (AFAIK), I am
| slowly switching most of my views to fully code, so I don't
| need to rely on Visual Studio's visual layout editors anymore.
| GordonS wrote:
| I switched from VS to Rider a few years back - it's great, and
| I'm so glad I made the move!
|
| Rider feels so much faster than VS, and is rock solid - these
| were my 2 main reasons for switching from VS.
| schipplock wrote:
| > .NET 6 is the first release that natively supports Apple
| Silicon (Arm64)
|
| Finally! :)
|
| I was a bit disappointed that MS didn't want to support macOS
| arm64 natively with .NET 5.
|
| At the same time Microsoft invested a lot of effort in porting
| Java to arm64. Almost a year ago I could download Java builds for
| macOS arm64 from Azul (java 8-latest).
| lbriner wrote:
| I would personally prefer you to fix the multitude of things that
| don't work well in Visual Studio and library issues that are
| continually pushed back as "won't fix" or "upgrade to .Net5/6" as
| opposed to always racing forwards to the horizon.
|
| Even those of us who are actively migrating applications are
| stuck with web forms, netfx and dotnet core 2/3 and will be for
| years, so it would be nice that we felt some love rather than
| being left behind.
|
| MS are starting to feel like Apple where you only have value if
| you can keep up.
| GiorgioG wrote:
| Nobody gets promoted for fixing bugs.
| sedatk wrote:
| It's not perfect but MS has been investing in a scheme to make
| upgrades as easy as possible for the last five years, .NET
| Standard being the prime example. This way, we've been able to
| migrate our project progressively while keeping it up to date.
| We've been able to use .NET Core versions of libraries as long
| as they support .NET Standard 2.0. This is way better than
| "migrate fully or die".
| symlinkk wrote:
| Why can't you upgrade to the latest version? Sounds like tech
| debt. And Visual Studio is almost dead, why aren't you on
| Visual Studio Code?
| lloydatkinson wrote:
| > Even those of us who are actively migrating applications are
| stuck with web forms, netfx and dotnet core 2/3 and will be for
| years
|
| Well, the job market is pretty hot right now so I hear.
| kreeben wrote:
| >> ASP.NET Core in .NET 6.
|
| I've been on .net since 1.1 and .net Core since 1.0 and this
| statement makes me so confused.
|
| Core lives _inside_ of .net 6? Is there a non-core ASP.NET that
| also lives inside that framework?
|
| I thought .net 5 was where the legacy 4.x branch and core 3.1 was
| married in holy matrimony, minus the worst of the legacy garbage.
| beauzero wrote:
| Looks like .NET Framework has had it's life extended as well.
| It is scheduled to be installed on Windows 11 and Server 2022
| which gives the 10 year native to OS support.
| https://docs.microsoft.com/en-us/dotnet/framework/migration-...
| GiorgioG wrote:
| I think "ASP.NET" would imply the legacy web framework, so they
| had to keep the "ASP.NET Core" name. Not unlike EntityFramework
| & Entity Framework Core.
| goto11 wrote:
| The naming really is confusing. "Core" was the keyword for
| several semi-independent projects.
|
| There is .Net Core, which was a rewrite of the .Net runtime to
| make it platform independent.
|
| Then there is ASP.Net Core is which is a rewrite of the ASP.Net
| web stack. Despite the name, this was not initially dependent
| on .Net Core platform, it could run on both .Net Framework and
| .Net Core.
|
| ASP.Net Core is the only web framework running on .Net Core
| though, the old ASP.Net framework is not ported to .Net Core.
| So to answer your question, no, there is not a non-core asp.net
| running on the .Net Core platform.
|
| Then there is EF Core which was a rewrite of Entity Framework.
| Again, this was not initially dependent on .Net Core, although
| later versions is.
|
| Basically "Core" just means "new backwards-incompatible
| rewrite".
| tonicbbleking wrote:
| Naming it ASP.NET 5 would clash with .NET Framework ASP.NET 5
| MVC, hence the ASP.NET Core 5 name.
| metaltyphoon wrote:
| I see all 'Core' names being dropped with the release of .NET
| 7. So it would be .NET 7, ASP.NET 7 , EF7
| cptskippy wrote:
| I look forward to the announcements of Office Core and
| Windows Core.
| recursive wrote:
| https://docs.microsoft.com/en-us/windows-
| server/administrati...
| [deleted]
| [deleted]
| DaiPlusPlus wrote:
| Oblig: https://stackoverflow.com/questions/51390971/im-lost-
| what-ha...
| kingcharles wrote:
| Wow, I take it you are the author of that post. That is
| incredible. You need some sort of presidential medal for
| that.
| SigmundA wrote:
| So no excuse for .Net 6 since there was no ASP MVC 6 right?
| WorldMaker wrote:
| There was. ASP.NET MVC 6 and EF6 were the last versions for
| .NET Framework 4.x. Hopefully with .NET 7 next year and all
| the versions aligned they will drop the "Core" name for
| just ASP.NET 7 and EF7.
| orthoxerox wrote:
| And someone will finally cross out that Jira (er, Azure
| DevOps) task on their list. "Harmonize branding and
| version numbers across all major .Net technology
| offerings", only took them ten years or so.
| olyjohn wrote:
| And a bunch of people probably had a bunch of meetings and
| sat around and thought "Yes, this is what we will name it!"
| FFS!
| DavidKarlas wrote:
| .NET is sane now... .NET 5, .NET 6, .NET 7... all cool, no more
| confusion going forward... .NET Framework(full Windows only
| Framework) is .NET Framework 4.x, stuck there forever only
| security patches...
|
| Only remaining confusing part left in ecosystem is "ASP.NET
| Core", because even though .NET got rid of Core, latest version
| ASP.NET didn't
| vyrotek wrote:
| And Entity Framework Core unfortunately because EF6 was
| already a thing.
| WorldMaker wrote:
| Yeah, hopefully as others have pointed out, with .NET 7
| next year all the version numbers align so that ASP.NET and
| EF can drop "Core" again.
| foepys wrote:
| Searching the internet for help is going to be a
| nightmare, though.
| WorldMaker wrote:
| Shouldn't be too bad, I don't think, if you remember the
| version number. Which anyone that worked in ASP.NET 4, 5
| or 6 was generally pretty used to (a lot of things
| changed between versions even the "classic" .NET
| Framework days). I still have "fond" memories of fighting
| to find a specific EF6 answer that was different from EF4
| or EF5, but that was still somewhat easier than having to
| remember to add "core" to all your searches lest you get
| classic EF3 results when searching for EF Core 3.x help.
| Having a version number high enough that you no longer
| need "core" is something I'm looking forward to.
| svick wrote:
| I guess they could do that, but what makes you think they
| actually will?
| jaywalk wrote:
| Well, part of the problem with the naming for ASP.NET is that
| the .NET Framework version (WebForms) was simply called
| ASP.NET, so they couldn't just drop the "Core" like they did
| with .NET itself.
| merb wrote:
| btw. webforms is dead. thank god.
| JasonCannon wrote:
| ASP.NET isn't only WebForms. It also covers the Razor
| engine as well as their WebAPI (API only).
| [deleted]
| phillipcarter wrote:
| > Core lives _inside_ of .net 6? Is there a non-core ASP.NET
| that also lives inside that framework?
|
| Yep!
|
| > I thought .net 5 was where the legacy 4.x branch and core 3.1
| was married in holy matrimony, minus the worst of the legacy
| garbage.
|
| .NET 5 was the next evolution of .NET Core. There was no great
| merging of legacy .NET Framework into the .NET Core branch or
| something like that. It saw a bunch of foundational stuff land
| in so that .NET could support modern client apps from Xamarin
| and further support the modern versions of WinForms and WPF.
|
| If that sounds confusing, it kind of is. But it's a clear
| branding effort - .NET is not a choice between the "slim .NET
| Core" and the "big .NET Framework. It is either .NET or the
| legacy stuff (still called The .NET Framework).
| dschuessler wrote:
| Microsoft branding is terrible. My only point of contact with
| it is Visual Studio Code which is different from Visual
| Studio which is different from Visual Studio for Mac.
|
| There was a brief period of time after I recognized that .NET
| really works on all platforms without proprietary stuff and
| before the `dotnet watch` desaster in which I was at least
| curious about .NET. But even then I never fully figured out
| how .NET, .NET Core, ASP.NET, .NET Framework, .NET MAUI and
| the kitchen sink relate to each other.
|
| If the purpose of branding is to make something recognizable,
| Microsoft consistently fails across the board with me.
| JasonCannon wrote:
| >.NET, .NET Core, ASP.NET, .NET Framework, .NET MAUI
|
| ASP.NET Is the web framework that comes with .NET
|
| .NET MAUI is the application user interface framework that
| now comes with .NET (Since .NET 6)
|
| .NET is the overarching term for everything .NET.
|
| .NET Framework refers to every version of .NET 4.8 and
| before. .NET Framework only ran on Windows (unless you used
| Xamarin to run it on other frameworks. Xamarin was a third
| party implementation of the .NET framework, it is now owned
| by Microsoft as well).
|
| .NET Core is the new version of .NET. In the first 4 (I
| think) versions it had it's own branding, .NET core 1, 2,
| 2.1, and 3. .NET Core runs cross platform across the
| desktop OS's natively. Xamarin was still used for mobile
| development.
|
| What would have been .NET Core 4 has been rebranded as .NET
| 5. Xamarin at this time was brought into the fold, allowing
| full functionality of .NET Core API's across desktop and
| mobile. I believe this rebranding was done because .NET
| Core was being considered full feature enough to take over
| the legacy of .NET.
|
| One thing you didn't mention but I'll touch on as well, is
| .NET Standard. Lot's of people get confused about .NET
| Standard. .NET Standard is just the definition of what
| different frameworks that implement .NET Standard can use.
| So if you write your code to target .NET Standard you can't
| use .NET Core specific API's but what you can do is have
| the same code compiled against .NET Standard referenced in
| your .NET 4.5 - 4.8 Code, or your Unity Code, or your
| Xamarin code. It was primarily designed with libraries in
| mind.
| svick wrote:
| > ASP.NET Is the web framework that comes with .NET
|
| Not quite. ASP.NET is the web framework that comes with
| .NET Framework. ASP.NET Core is the web framework that
| comes with .NET Core and .NET.
|
| > .NET Framework refers to every version of .NET 4.8 and
| before.
|
| It was fine to call .NET Framework 4.8 just ".NET 4.8" in
| the past, but I would avoid it now, to clearly separate
| .NET Framework 4.8 from .NET 5.0.
| dustinmoris wrote:
| > Microsoft branding is terrible.
|
| Agreed.
|
| > I never fully figured out how .NET, .NET Core, ASP.NET,
| .NET Framework, .NET MAUI and the kitchen sink relate to
| each other.
|
| You're not the only one who is massively confused about
| everything that is labelled .NET or Core.
|
| If anyone else is struggling, I recommend this (I wrote
| it):
|
| https://dusted.codes/dotnet-basics
| Douger wrote:
| You've done a really nice writeup here. To me it reads as
| someone patiently explaining the basics without being
| patronizing.
| kingcharles wrote:
| Great article, thank you.
| rbobby wrote:
| The naming for .NET got tough when it was decided that open
| source and cross platform was the way forward. If that had
| not happened it would all be called .NET framework to this
| day.
| spaetzleesser wrote:
| Agreed 100%. Even seasoned .NET devs can't tell what all
| this stuff means and what the implications are. I wonder if
| anybody at MS really knows.
| phillipcarter wrote:
| We used to have a saying on the team when I worked there:
|
| "Nobody can name things like we can't!" (followed by cry-
| sobbing)
|
| The more serious response to this is:
|
| For better or for worse, The .NET Framework (which is now
| squarely legacy tech) has stuck around and been reliable.
| People have had their trust in it validated. For two
| decades now, if you're a CTO at some big enterprise, you
| know that .NET Framework will get the job done for much of
| your development needs. From a Microsoft branding
| perspective, this is amazing. But it's got all kinds of
| problems can't be fixed unless you break everyone. Uh-oh!
|
| This is the biggest reason why branding and naming has been
| so complicated pver the years. And it's even come with
| little sub-problems, like the fact that the version number
| for one "flavor" of .NET would match up with the version
| number for another "flavor" of .NET and so now you're
| screwed no matter which decision you pick.
|
| A cleaner approach would be to throw it all away and do a
| complete rebrand (we had a little proposal to call it
| "Concert" where C# and F# could be played in harmony with
| each other, how cute) but with that you throw away the
| brand of one of the most successful pieces of technology
| ever produced by the company. Not exactly a winning
| proposal.
|
| The other factor here is that with .NET there is _so much
| software involved_. It 's three entire programming
| languages, a runtime, a huge standard library, a web
| framework, a database access and management framework, a
| machine learning framework, several Windows app frameworks,
| a mobile framework, IDE tooling, command-line tooling, and
| a bunch of other stuff too. .NET is far larger than many
| other competing stacks in terms of what a single vendor
| produces. Since Microsoft produces so much software for
| .NET and aligns their releases, they also message each one,
| and with that there's a big sea of stuff to keep track of.
|
| I don't know if I have an answer for how to handle the
| complexity of it all. A lot of folks I know in the F#
| community only keep track the F# language and IDE tooling
| updates, then dive into specific stuff only when they care
| about it (e.g., doing web programming? check out the
| ASP.NET release notes). But that may not be an option if
| you're a decision-maker at a company.
| ozim wrote:
| There are more purposes for branding and if you have people
| calling themselves ".NET developers" you probably want to
| stick to that brand instead of coming up with something new
| that people would not trust.
|
| I believe people would not jump as easily onto that wagon
| if it would be called "Silverlight Core".
| cl0ckt0wer wrote:
| the old "framework" versions are in maintenance mode. That is
| the OG aps.net and framework. it's currently at 4.8 and will
| probably stay there forever. This includes the OG versions of
| things like ASP.NET and Entity Framework.
|
| The open source multi platform rewrite, originally named core,
| now named "", is going to be the active platform going forward.
| There are several core rewrites of the popular modules that
| will be the ones that are actively developed going forward.
|
| We can either stay on 4.8 forever, or migrate to the "" which
| is where all the new and exciting things are being developed.
| MS has promised they will support 4.8 for the foreseeable
| future, for what it's worth.
|
| Here's a video explainer: https://youtu.be/4olO9UjRiww
| na85 wrote:
| Microsoft is easily the worst at naming things.
|
| At this point I've given up hope at grokking the various names
| within/peripheral to dotnet.
| mbesto wrote:
| Welcome to .NET :)
|
| It requires a PhD to understand versioning at this point.
| [deleted]
___________________________________________________________________
(page generated 2021-11-08 23:01 UTC)