.NET 5
devblogs.microsoft.com
devblogs.microsoft.com
vNext has already been historically used in the context of ASP.NET to refer to ASP.NET (not to be confused with ASP.NET MVC) v6. We restarted the versioning back with ASP.NET Core, now on version 2. Entity Framework used to be a .NET framework component but is now standalone, and has a Core version? Does Blazor (or is it Razor Components now) share the .NET branding?
Separate to the web stuff, we have the .NET platform - .NET framework is the non-cross platform version for which we're on version 4, but it implements .NET Standard v2 along with .NET Core, which has a Linux runtime. Mono also implements .NET Standard v2 and has a Linux runtime.
I remember many years ago when we also had Microsoft .NET Passport.. which was completely unrelated to everything else that I've mentioned related to the .NET brand.
And now we have .NET 5 which is neither Framework nor Core - so will ASP.NET drop this Core branding too? Is it just me, or is this all incredibly convoluted?
Just to note, the blog post explicitly says that .NET 5 is the next version of .NET Core. It's where .NET Core is going, and given that so much more of the .NET "picture" is being realized with it, the name is changing to be more reflective of the fact that it's not really a "core" (small) thing anymore.
And where does this leave the legacy .NET Framework? It reads as a sub-project of '.NET' (previously .NET Core) but it very much isn't because it provides a set of older APIs. We seemingly have two meanings for .NET now, referring to .NET Core (which I guess only applies when suffixed with v5+) and the wider array of .NET projects, whatever they are.
EDIT: more on this here https://devblogs.microsoft.com/dotnet/update-on-net-core-3-0...
"Both .NET Framework and .NET Core will move forward, and both will be fully supported"
???
Which is why I found this one confusing... because it essentially says the opposite.
"We aren't ending full framework, we have .NET 5!"
If you are developing new apps in full framework, you are doing it wrong.
Thankfully, they finally got around to adding support in .NET 3.0 (https://www.strathweb.com/2019/01/collectible-assemblies-in-...).
Unless there is a newer version than last month, one of those is the Bot Framework extensions for Microsoft Teams, which they are just slamming ahead with.
Even with the tremendous strides in tooling and docs, the naming and runtime complexity is the biggest hurdle in getting new developers to the ecosystem. Just about every other major stack has a far simpler setup. Even ".NET" is hard to search for.
Not to mention the fact that the whole thing was named after an experience that to me at least has always meant "Shoot, .com isn't available!"
My understanding is .NET 5 is both. Previously .net framework and .net core were both implementations but also api surfaces. And it's my understanding that .Net 5 will basically "implement" both. So .net standard won't be necessary because if all implementations(.net core + mono) implement all the difference api surfaces then you don't need a "common" api surface.
So there will only be two implementations. Mono and .NET core which will provide all the same api surface as .net framework + .net core(and therefore .net standard).
Today, we’re announcing that the next release after .NET Core 3.0 will be .NET 5. This will be the next big release in the .NET family.
There will be just one .NET going forward, and you will be able to use it to target Windows, Linux, macOS, iOS, Android, tvOS, watchOS and WebAssembly and more.
I think Microsoft has been guilty of what you say in the past but this announcement and their product offering going forward could not be more clear.
I think the problem with MS is they want a simple name change to look like some new unifying strategy. Developers would be much happier if they just cut out the bullshit and made it clear this is just a name change of .net core. The name change in itself is fine.
MS is just FUD'ing themselves with these confusing messages.
Well, everything will move to 5. And the framework at 4.8 will stop being developed. And 5 ( Core, whatever you want to call it, ) is incompatible with the .Net 4.8.
How misleading is it?
Not likely. Many libraries (like web forms) will probably never be migrated. We will have two incompatible .net's for the foreseeable future. Changing a name does not change that.
Personally, I've been hearing about MS Build vNext and TFS vNext for the last 8 years, and there's been several releases since then. Maybe that's why I kind of associate it with vaporware, even though that's probably unfair.
What would be a great naming schemes for retro fitting an open standard with a new, open implementation for a subset of the existing framework?
But yeah, it got a little crazy with divergent visions there.
vNext is a term used across much of the Microsoft ecosystem to denote the current WIP version of a specific technology. SQL Server vNext has pointed variously at what became the 2017 release and currently points at the 2019 release (and will soon point to the next release after that).
On the bright side unifying products and libraries and stuff will mean it doesn't have to confuse me anymore (:
I'd vote for .ONE, one API to rule them all.
Though convoluted does sell books, I'm sure we will see a title "When is .NET not .NET" soon.
Yeah, that's easy to search for!
/end sarcasm
Remember 20 years ago, when .NET wasn't just a managed software development platform? It was a company-wide strategy[1] that was meant to encompass more-or-less their entire product line. The whole Microsoft future was .NET, and they were going to have a .NET edition of Windows, SQL Server, Exchange, etc.
Since then, those plans have been dropped, Microsoft's (.NET-based) preferred GUI toolkits, WinForms and WPF, were replaced by one that is .NET-compatible but not .NET-native, etc. etc. .NET just isn't as central to Microsoft's identity as it was 20 years ago.
Which, I'm guessing, means that the .NET team is now a lot freer to go cross-platform without inviting the wrath of the Windows team.
There is not much of Windows team to wield the wrath:
https://arstechnica.com/gadgets/2018/03/windows-leader-terry...
https://kennykerr.ca/2019/01/25/the-state-of-cpp-on-windows/
Read towards the end.
This spawned a lot of interesting academic work that influenced languages such as Rust... trying to get high level features and safety without need for a runtime.
I worked on dev tools at Google and recall many efforts over the years to try to unify the customer experience -- between internal and external tools, Go and Dart, Android and Chrome devtools, etc. Things always lurched in one direction or another, but never consistently. It was always above someone's pay grade to choose one or the other, so you ended up with both.
Convincing engineers on devtools to abandon their babies is indeed hard!
On the other hand, I think if you dig deep, Microsoft still has all the legacy, but they cover it up with a lot of branding. Hence the top comment in this thread about confusing branding.
But it's clear now that 1) Windows has zero chance of taking a significant market share away from Linux in the cloud and 2) cloud technology is an important area of growth for MS.
Satya probably sees that stubbornly sticking to Windows just isn't going to work anymore, so it's better to play nice with the others.
Office for Linux would be easy, but that’s not going to happen.
My companies online outlook shows that MS is adding clones of all the tools (slack/trello).
They’ve been successful and monitizing in this new era
I have a hard time believing it would be easy. I use both Office for Windows and Mac, and the differences are great enough that I'm guessing that there's a huge amount of divergent code in the UIs. And both would be written against GUI toolkits that are not present on Linux, so a Linux port would be yet another major effort.
That said, I think that you're right that it's not going to happen. My understanding is that a major consideration for anyone looking to port a commercial desktop product to Linux is that Linux desktop users are, in the broad, very hesitant to spend $100s on a commercial product when open source alternatives exist. My guess would be that a Linux port of Office just isn't a proposition that is likely to generate positive profits.
But "Desktop Linux" will always be a million support headaches for no market share; which begs the question "Dear Lord, why?"
I tried some googling but the results seems to be all speculation. Is this really happening?
For 95% of business users, these online editions have all the capabilities they need without the install headache and are much easier to maintain and update. Office Desktop just had a refresh too but there's basically 0% Linux business users to spend the millions in development costs for a variant.
I haven't used Office in years and don't know anyone who has, so I'm not sure how big of a priority it is to add platforms to a product like that.
Arguably a large part of the reason that Linux isn't used in offices is because MS Office isn't available. Of course it's in Microsoft's interest to keep it that way.
They have the right idea today, embrace server-side Linux with .Net Core, and soon, .Net 5. That's what Linux is primarily intended for, it's a server kernel and where the action is in regards to that ecosystem. There's a reason some of the code in X11 hasn't been touched in 20 years.
- Netflix - moved from delivering discs to streaming and moved their entire infrastructure to AWS and CDNs
- Amazon - went from just being a first party retailer to being a marketplace, AWS, and Alexa.
- Apple - as of last quarter all five of their major verticals are large enough to be a F200 company by itself.
- Facebook -- Instagram and WhatsApp were acquisitions but it didn't ruin either and they are both larger than they would have been.
- Google -- well still just a one trick pony - search ads (as far as profits) no matter how many things they against a wall.
It's sad how so many articles and comments come off just pure PR now. Not saying your comment is, but I have to wonder how much of the "news", comments and internet content is now just PR.
If you mean .NET Core as official open source, that's true, but it's a relatively recent thing.
Like asp.net core was meant to be incompatible with .net full framework because of inconsistent featureset, is that going away? For applications, .Net core binaries are different from .net full binaries, they compile to a .dll, not an executable .exe, you have to run them with a command line (and if you choose the option to create an exe it comes with lots of additional binaries that aren't required in full .net framework, plus I understand some additional problems of version compatibility with the installed .net framework). So is .net 5 going to be one or the other? Or is .net 5 just another way of saying that they are discontinuing the full .net framework and that now everything will have to be .net core? But then is a simple full .net framework 4.7.1 .exe run on .net 5?
Just to add to the confusion, you can target an ASP.Net Core Application to run using .Net Framework.
They are achieving this by bringing Mono more "in-the-fold", making it interchangeable with CoreCLR, and ensuring CoreFX runs on every runtime.
It seems that are leaning on Mono because of it's AOT abilities, which doesn't say good things about the future for CoreRT.
I like the idea of using Mono though, it's easier to embed in native applications.
I'm personally happy to see more of the .NET Core stuff end up in Mono since it usually is battle tested and has better compatibility, and I'm also happy to see more stuff approximating the existing .NET Framework and Mono workflows since .NET Core has historically been unable to do important things that netframework and mono can do.
bias disclosure: I work on Mono
Which you can use .NET Core with!
I tried about 5 searches but didn't find anything useful so far.
That's perfectly normal.
There is no such thing as "Cross Platform .NET"
The C# language and the.NET Framework does indeed run on almost all platforms, but that pretty much ends here in terms of "portability".
Anything beyond that is "platform specific"
For instance, building "desktop" applications is either UWP with advanced styling and reactive data binding but only for Windows or GTK# with Mono which is very limited.
For Mobile either Xamarins.Forms for Android + iOS but it's very limited in terms of features, or it's Xamarin.iOS + Xamarin.Android which require platform specific code for UI / Routing and many others OS specific functions.
For Web , the WASM Binary is something like 5MB+ which makes it not reasonable compared to an app written in Plain JavaScript or TypeScript.
There is still a long way to go for C# to be really "cross platform"
IMO, that's not entirely accurate, and does .NET a bit of a dis-service.
.NET Framework isn't cross-platform, and doesn't pretend to be - it's Windows only.
.NET Core is cross-platform, with runtimes for Windows, Linux and MacOS.
Regarding Xamarin, I guess you haven't used it for a while? Until very recently, I had the same opinion, but only because it was years since I had used it - turns out it's rather good now!
Where cross-platform ends is really with desktop GUIs - web apps, web APIs, console apps, backend processing services/daemons etc, all of these work very well across the supported platforms, and the only time you'll likely write platform-specific code is the rare cases when you need to pinvoke into native DLLs.
Aside from the likes of Electron, I'm not sure there really is a good cross-platform solution for desktop GUIs. Microsoft would be hailed as heros if they ever crack that one :)
Microsoft used to follow the eat-your-own-dogfood rule, which would seem to indicate that the development tools should use the same run-time and run on all the targets, but the announcement only mentions linux as a target. As a hobby-only-on-linux-only developer who does not buy or sell any software or related services, I find this announcement a poke in the nose with a clue stick.
WebAPI, APS.NET Core, Pwsh, C# 7... I dont work for MS, but that is some seriously good tech stack. Performance is amazing too. I highly recommend it. Worked in 50+ environments so far but this is top stuff. MS really nailed it this time. No, don't tell me that JAVA is comparable to C# in elegance, that linux dudes had python/ruby/perl/whatever before Powershell etc.
The only problem we had so far was with the Oracle db drivers which were non existent until several months back, but that is on Oracle... which sux more and more each day - commercializing java for example will just give a boost to .NET now, a lot of it - who at Oracle made up such decision escapes me, but maybe he works for MS.
I have a project in the early design phase that I was thinking of going with .Net Core on Linux. I've thought about going with Java, but with all the recent Java licensing changes don't think I want to go that route anymore.
Now, we use Linux alpine docker containers, use postgre instead Sql Server and pwsh with Invoke-Build to run CI/CD stuff. Sworm for orchestrations and compose for local. Have 2 incoming country-level services this year for production. Currently on dev/stage it works really fast but load is trivial.
We did a lot of performance test on Windows and achieved 1.5-2K req/s with hello world and our setup on IIS/kestrel. Did no test for linux variant so far.
> I've thought about going with Java,
Java compared to latest C# is like ... Clojure to VBA. No brainner really, plus Oracle (sure, there are alternatives).
Also, entire Java enterprise stack is overengineered beyond repair. I need 77 classes for basic stuff. Take .NET core you wont regret it.
I've found that .Net Core on Linux and in Windows are close enough that scaling should be the bigger concern. Unless you're tethered to windows, the broader tooling is much more mature with Linux containers/pods.
On the Java side though there is a hack in JRE which checks if JVM runs inside a Docker container in order to not get out of memory limit by cgroup.
With so much experience you must know how this sounds to someone not in the .net space.
You and your company are clearly well versed in .net and it's worked out for you -- take a person and a company equally experienced in Java and they'd achieve similar results (I have, companies I've worked at have). The systems you're describing are not extraordinarily large scale systems. You've failed to outline the gains here vs. another tech stack.
For example, this is the one about Chocolatey that I gave at Microsoft event few years back (other are similar, but all on Serbian ATM since I mostly do consulting locally and involve everything from Gitlab over InfluxDb over PowerShell to obscure languages such as Autohotkey):
That being said, both .NET and the JVM are great platforms. You'll have to evaluate both platforms and see which one benefits your project more.
We are already on top of .Net Standard/Core 2.0 and are building successfully against 3.0 prerelease targets without modification. I would anticipate the move from Core 3.0 to .NET 5.0 would be trivial for us, and as long as self-contained deployments are still around in 2020 our build & publish pipeline won't know the difference (aside from msbuild & SDK updates on Jenkins).
Exciting times ahead.
I ask because one of the positive things about .NET Framework 4 is that i can create a tiny .EXE and give it away and expect that people will have the runtime to run it since it is already part of Windows.
>You can now publish a single-file executable with `dotnet publish`. This form of single EXE is effectively a self-extracting executable. It contains all dependencies, including native dependencies, as resources. At startup, it copies all dependencies to a temp directory, and loads them for there. It only needs to unpack dependencies once. After that, startup is fast, without any penalty.
https://devblogs.microsoft.com/dotnet/announcing-net-core-3-...
I understand how MS did it in the past with DOS/Windows and how Apple has done it between the 68K/PPC/Intel transitions.
They seem to implying that you can create one executable that you can distribute and it will be able to extract the needed parts on any supported platform.
In many cases, this is the crucial difference between deciding to bundle the runtime yourself or not.
> Starting with .NET Core 2.2, you can deploy your app as an FDE, along with any required third-party dependencies. Your app will use the version of .NET Core that's installed on the target system.
> Your app can be run by calling the published executable without invoking the dotnet utility directly.
Typically the solution for this is to either sense what's installed (and use an installer) or just ship it and let the error messages help them figure out what to do.
Type providers works in general, but depends if the type provider library was updated to use latest type provider sdk. Also generative type provider may not works, erasing works
`dotnet fsi` is planned to be fully released later this year with the .NET Core 3.0 release.
Taken together, the .NET Core and Mono runtimes have a lot of similarities (they are both .NET runtimes after all) but also valuable unique capabilities. It makes sense to make it possible to pick the runtime experience you want. We’re in the process of making CoreCLR and Mono drop-in replacements for one another. We will make it as simple as a build switch to choose between the different runtime options.
Where can I find more details on this?
So from python you could probably flex to use ctypes, and from java, JNI. Naturally this is a bit awkward but I expect the mono binding tools would help smooth it over for Java (I have no idea about Python there.)
If I were developing a program language and sought to attract more people I would consider seamless invocation of code written in other languages a strategic height.
And does this explain why they don't seem to care about making .NET Standard versions at all logical to developers (e.g. making a major breaking change, not supporting .NET Framework, to .NET Standard in a minor version)?
Edit: And before someone says ".NET Framework is choosing not to support .NET Standard, you shouldn't version based off implementations but off changes in the API": That only works if you have many implementations, .NET Standard has 3 major implementations! Losing 33% is pretty significant :)
I want to see .Net Standard die, not because of the technological merits of it or problems, but because you guys have created such a confusing mess and .Net Standard is perhaps one of the worst examples.
.Net Standard seemingly exists to consolidate compatibility between Core/Framework/whatever, but with you consolidating them under the "Framework" branding anyway there's no reason it should exist except to confuse further.
Either something is or isn't .Net 5 compatible. The end.
You're in luck because that's the way it is. The .Net Standard is on the list of being .Net 5 compatible, because it's intended for shared libraries.
I want libraries written for .Net Framework, Core and .Net 5 to be cross-compatible. Targeting the .Net Standard is the only way to do that. That's easily worth putting others, who aren't even using it, through mental turmoil.
It won't be going away because the .Net Standard is an absolute must-have for the health of the ecosystem, and the most important underpinning to the entire Framework->Core->.Net 5 effort. As the grandparent comment said, it won't be as important going forward (.Net 5, 6, 7 etc) but won't be going away until the .Net Framework does. It's likely the .Net Standard will outlive you.
For now, it's a vital bridge between .Net Framework and .Net Core. It's something I make use of regularly.
http://gigi.nullneuron.net/gigilabs/wp-content/uploads/2017/...
The updated image is this:
https://devblogs.microsoft.com/dotnet/wp-content/uploads/sit...
Which seems to have removed the implementations (mono/.NET Framework) and implies .NET 5 will be targeted by all platforms directly?
So what is .NET Standard needed for anymore, platforms now target .NET 5 versions instead of .NET Standard versions right?
Write C# code purely in VSCode or Rider, compile to all three platforms while on a Mac, and run your code in Linux. All from supported, non-hacky features.
Why use Go if you can use C#? C# is now incredibly compelling. The C# of today is not the C# of 6 years ago.
In C# or Python 3, each function is colored as either sync or async. You can quite easily call an async function from a sync context, but doing a blocking sync call from an async context is forbidden (although possible).
In Go there is no such distinction: you just write your functions in a straightforward fashion, as if everything was synchronous, and then wrap whatever you want to run in the background in a goroutine. If you don't need the return value from that function, it is has simple as issuing:
go my_func(param_a, param_b, ...)
Note that goroutines are green threads, not OS threads, so you can easily spawn many tens of thousands of them without bringing your system to a halt.When calling into C code, there is additional overhead of potentially creating a new OS thread to continue running goroutines on, since go has absolutely no idea if the C code will block, but since the average C library does use blocking IO, it needs to either assume the worse, or alternative have an OS thread dedicated to monitoring for kernel level blocking, and spawning new goroutinine runing threads. (I believe the assume C calls may block approach is used.) It has heuristics to avoid creating a new OS thread every time, but in any case, if you have many goroutines calling a blocking C function call, it means you have many blocked OS threads too.
The IDE support of VSCode and integration with tons of other languages and tools make most other languages in this day and age seem superfluous, and I assume they are taking WebAssembly as far as it can go as I've seen talks where they mention support for low-level hardware. If they can just minimize the size of the binaries and files, we will soon see C# taking the place of C++ in terms of writing portable low-level code. I don't think it will ever take over C as it will never reach that performance level and that's a requirement, but C++ has been feeling very bloated as of late, and is becoming more of a pain to work with. If I have the option of ditching C++ in favor of C or C#, I'll do so and my decision will only boil down to performance.
I'm interested in what route they'll take as it doesn't seem they are trying to compete against any language in particular, but amalgamating what makes those languages nice to use into one, and they're doing a commendable job at it.
I like the vision but hate the name. .NET Core 4.0 would have done it. When you market software engineers stick with patterns. This looks like a lot of managers have feedback to stuff they did not understand in the first place.
The monikers were misleading. This feels clean, looking forward to it.
Does "Core" mean core functionality? Then what is ".Net Standard"? Is .Net Core cross platform or Mono? Why can't I use .Net Core library with Xamarin? Is Xamarin .Net Mono? Should I use .Net Core Winforms or .Net Mono?
J2EE is widely popular and continues to have a vibrant community. Oracle just doesn’t have the vision of how to encourage and mature that community and turn it into the proverbial golden goose. All they want to do is kill it to get all the eggs today. They can just copy/learn Microsoft’s strategy and come out on top.
>Everything you love about .NET Core will continue to exist:
> Open source and community-oriented on GitHub.
search "open source" on the page.
I am unsure if they would try to push UWP to those platforms, or focus more on expanding Xamarin which is already cross-platform. I know WinForms and WPF are considered far too dependent on Windows proprietary APIs to ever be officially supported elsewhere, I assume UWP is the same.
You can use .NET Core with Qt/QML. https://github.com/qmlnet/qmlnet
But the main issue for me is that Microsoft just needs to pick something, and say "this is how to write cross-platform desktop apps in .NET", and support it. I don't really care what it is, they just need to have one.
Instead, what I see them doing is making it easy to share code between UWP and other platforms. There are so many competing options for code re-use, hopefully .NET 5 can consolidate things a bit without sunsetting Mono projects
Lets see how .NET 5 will sort out the current state of affairs.
In any case, it is a welcome change to sort out the mess that the whole WinRT and .NET Core 1.x have brought out.
We use 'legacy' APIs like System.Drawing and System.DirectoryServices from .NET Core without any issues today - https://docs.microsoft.com/en-us/dotnet/core/porting/windows....
Although, we exclusively target Windows platforms right now (RID == win-x64). We are considering replacing these Windows-only deps with cross-platform alternatives in the future (e.g. Novell LDAP and Mono drawing) so that we can start looking at Linux as another hosting option.
I have even had reasonable success with retargeting 3rd party libraries to .NET Standard 2.0 without much coding effort. It's mostly just *.csproj XML soup management.
Windows Communication Foundation (WCF)
They same goes for EWT tracing which is the logging mechanism you can use. That also has to be cross platform.
So for some years to come, I (on some projects) are "stuck" with .NET 4.X until WCF and EWT has been re-architectured.
Is there a ground up tutorial, concept-wise, about how asp.net works?
I want to love .NET Core development because I love Microsoft’s open source effort, but the support (or lack thereof) from the documentation is quite the hindrance.
Maybe your struggling in other areas?
Been using VS and VSCode for a long time.
Don't care that the docs are open source.
My issue is that I guess I have high expectations for the official docs of a platform/framework/library/whatever. You shouldn't have to buy a book or read a random blog to find critical information on core functionality. The official docs should provide that, and Django is a great example. It includes how to do things, why things are the way they are, how to customize workflows, best practices, pitfalls, and on top of all that the source code is super easy to read and understand.
The pages at docs.microsoft.com are mostly just basic walkthroughs that leave me with a lot of questions. And the .NET Core source code is not nearly as readable.
It's getting better though. And I don't mean to take jabs at Microsoft because I truly do appreciate how much they've done in open source over the last few years, especially with VSCode.
Microsoft docs are constantly under revision, including general improvements (not just reaction to changes), and the writers are very receptive and responsive to feedback.
(I work at Microsoft on docs, but not on the ASP.NET Core docs)
https://codemag.com/Article/1609071/Getting-to-the-ASP.NET-C...
> Moving to a single .NET implementation raises important questions. What will the target framework be? Will NuGet package compatibility rules be the same? [...] How does writing code for a specific architecture work? [...] We are working through these issues now and will soon be sharing design docs for you to read and give feedback on.
This, however, is my biggest worry. Between runtimes, content files, analyzers, native references, asset visibility rules, etc., packaging has become kind of a mess. I'd love to see a move away from monolithic packages, but IDK if that's on the table. Fingers crossed.
GUI is not cross-platform in .NET 5 which is not visible on the graphic.
I don't know much about WPF, but it seems to be in an odd place with UWP. The fact there are no plans to port WPF MacOS/Linux, combined with the increasing emphasis on cross-platform... I'm curious where it goes from here.
Legacy or not, Win forms would be better then nothing. For that to happen GDI+ need to be ported to core and for WPF to happen DirectX needs to be ported to core. Its all into UWP now.
So I guess it will not happen soon. MS should reboot IMO.
> Java interoperability will be available on all platforms.
What, is that possible now on some .NET platforms? What does it mean? That I can use java classes in my .NET application??Presumably if you are using any of the following heavily in your applications, you will never be able to run on .NET 5 without major porting effort (I.E. reworking everything to avoid these):
* Remoting
* C++/CLI or Managed-C++
* App domains
* code access security
* ASP.Net Web Forms
* Exposing registered COM interfaces from .NET code for access from Win32 code.
* WCF Servers (Technically, nothing prevents somebody from porting this, since WCF is basically pure managed code, and its tricky Proxy related code is already ported as part of the client code. It is just that Microsoft has no plans to bother with this.)
Will SQL Server upgrade its .NET support for .net 5? (Potentially breaking compatibility with certain currently supported use cases)?
I'm guessing IIS Managed modules will never upgrade beyond .NET 4.X.
I'd be surprised if the goal isn't 100% compatibility. If Microsoft can get Linux applications to run on Windows, they can probably get .Net applications to run on .Net.
Work is ongoing on this for .NET Core, or at least it was very recently. I certainly hope it will make it into .NET 5.
App domains were never used beyond a few edge cases.
For most of your other examples, I haven't personally used then for at least 5+ years.
Shouldn’t it be possible to wrap a Windows .Net Core app with a COM interface and register that for use in an old Framework app or vice versa?
So that kinda diminishes my initial excitement, much could change in a short period and we are talking over 2 years until any additional features becomes set in stone with LTS support. So for me, it's probably not looking at until 6 months before LTS release. As is the case with many others.
But some good changes - a rebrand would of cut of any confusion and historical hangovers. As between now and Nov 2021, much could change.
I'm a JS, Python and PHP developer who sees a majority of jobs in my area as .NET centric. To this end, I'm interested in familiarizing myself with .NET [1] but I'm totally at a loss wrt/ where my entry point to the ecosystem should be.
[1] Insofar as starting a new small project or re-implementing an old side project in .NET as a learning process.
Instead the announcement was primarily about unrolling the version mess created over the last few years.
My read of it is that .NET Core becomes the new .NET, not that .NET Core has parity with the existing .NET.
Specifically I can't just retarget my existing projects against .NET Core (or the new .NET) and have them just work.
Except for 2.x-3.x, .NET Framework didn't provide backward compatibility across major versions, so a break at the 4.x-5.0 transition would be in line with .NET Framework history even if .NET 5 was viewed as .NET Framework 5. Which seems to be why the version of what is basically .NET Core after .NET Core 3.x is .NET 5, so it fits expectations whether viewed as a .NET Core version or a .NET Framework version number.
Enterprise will no doubt keep legacy .NET Framework 4.8 around for legacy apps—the same way they do Framework 1.1 and 3.5.
> It's like merging Java and JavaScript "for clarity".
Not really. .NET Core can be viewed as just a production-ready but not feature complete early release of the next major version of .NET Framework, which involved major reengineering, and which will be released as .NET 5 when it is feature complete.
They badly need .NET to get adoption outside of Windows, which is a stagnant platform regarding dev adoption.
Agreed. However they have a long tradition of doing the right thing and then killing it immediately with stupidness and arrogance
As for Windows, being stagnant, unless one is living in SV, it is quite relevant for anyone doing desktop, laptop and 2-1 software.
I think my mac days would be over if Windows had better font rendering and a usable terminal -- even ConEmu leaves a lot to be desired.
Don't most developers using non-Community VS get it via a Visual Studio subscription, either annual Standard (formerly, MSDN) ir monthly Cloud, both of which also include current and former Visual Studio downloads?
The are deprecating all of the past in favor of .Net 5
In the techcrunch windows terminal thread, one of the top comments starts with "I've been developing on both MacBook Pro's and Windows laptops for 15+ years now, on a daily basis, and I can confidently say that Windows laptops are superior to MacBook Pro's for development in every way.".
It reads like an infomercial. What is going on? Did the "hacker" community suddenly fall in love with Microsoft?
Another gem: "Satya seems to be the rare visionary CEO of a megacorp, instead of just defaulting to a defensive and reactionary stance like most other leaders."
If they do a good job at supporting development on all platforms, and their intentions are clear and any intrusive additions can be spotted and built out effectively, why should they not be commended for it?
It would be great to see a binary conversion/transpiler tool that converted 4.X libs to 5, checking the API compatibility and maybe even shimming some known holes.
I just convinced my PM and team, that we should consider .net core and they have agreed...we have started development of our new app..
This news will make things more complicated...Sigh
Edit: Quite negative votes..No need to down vote..just explain your viewpoint with more civilized means using "reply"
Looks like .NET Core did exactly what it was supposed to; provide a early-usable bridge to where .NET was headed for the people who didn't have legacy compatibility requirements while the implementation hat was the future got to the point where it could subsume the role of the legacy .NET Framework.
> Now they are abandoning again this new '.Core' bandwagon...
No, they are abandoning the old .NET Framework, because everything needed will now be implemented in .NET Core. They are also then skipping a major version in the numbering for .NET Core (so that the version number is also greater than the last-ever .NET Framework version) and dropping the modifier “Core” from the branding because there is no longer a “.NET Framework” for core to be contrasted against.
they also communicate clearly now that there will only be one dotnet implementation in the future, .net 5 and forward. in the past there was no clear message what will happen with mono, .net4x, etc...
I think it's safe to think of this not as abandoning .NET Core but conversely they're promoting the technology behind .NET Core as THE future.
I would expect the migration from .NET Core 3.1 to .NET 5 to be quite straight forward.
This announcement sounded more like unifying the various different bits of. NET on 5 in future rather than yet another breaking change?
If you're building with .NET Core now, you have nothing to worry about.