.NET 7 is Available Today
devblogs.microsoft.com
devblogs.microsoft.com
We're about to start a project with those limitations and there really is no good choice now that .NET 6 is already a year through it's lifecycle.
[a]: Pass the `--sc true` option to `dotnet publish`: https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-p...
https://learn.microsoft.com/en-us/dotnet/core/deploying/runt...
You have a point, but I'd call out that migrating to newer releases can and often is trouble-free.
A couple of months ago I worked on a .NET Core 2 web service that was put on cold storage for a few years, and all it took to migrate it to .NET Core 6 was a few version number bumps and a rebuilding the project.
YMMV of course, but LTS shelf life might not be a deal breaker.
I say particularly, because Core2->Core3.1 was a fairly painful change for some.
I'd say the 66% worst case is 'you also have to add some compat flags and stories to properly resolve the compat flags'.
This is why it's much better to move away from the shrink-wrap model of delivering software and focus on SaaS only solutions.
Many years ago I wrote software for a medical device. Before we could sell the device we needed to get it tested by Underwriters Laboratories to ensure it was safe (wouldn't shock people) and could be cleaned by hospital staff without damage. We also had to do the process to get the CE mark for it so it could be sold in the EU. And of course the FDA needed to approve it. It took nearly a year for all this, before we could offer it for sale and start marketing it.
So there's a third of the LTS lifetime consumed, right there.
Until the date hits them in the face there’s no urgency.
It's not really Microsoft's job to work around your awkward requirements. Everything is open source, you can ship patches for .NET 6 yourself if you really want to.
Node (used at least as much as .NET and Java in enterprise) has a 3 year LTS cycle
I'm gonna need a citation on that. From what I've seen, what enterprises have done any node adoption have fled it like rats fleeing a sinking ship because of all the problems it's had over the past half decade. To the point that shops I've worked with are moving back to Java.Microsoft's general-ish LTS for .NET is 2 years. We also only seem to get a new release every 2 years. It's hard to handle breaking changes between two versions quickly.
What kind of breaking changes have been hard to handle?
Biggest problem for us is .NET Standard. I don't even understand how it could work on a theoretical level. Maybe it could work if there was no dependencies.
edit: Ok I see, it seems in that scenario loading the correct assembly is more difficult on dotnet framework and usually requires binding redirects to be specified. On dotnet core/.NET 5+ there are no issues though, which is why I haven't experienced this problem myself.
https://nickcraver.com/blog/2020/02/11/binding-redirects/#th...
We pretty much banned .NET Standard for any in-house dev.
Edit: The bindings that is. Maybe the devs too.
We are also preparing for a move from .NET Framework 4.7.2 to .NET 6/7. It's going to be quite the project.
Congrats to everyone who fought vigorously to make it happen, screw the managers, execs and their surrounding noise, long live to the real engineers at Microsoft
- "All required code is compiled and/or linked into the executable, ..."
- "No JIT means no dynamic loading of arbitrary assemblies ..."
- "... with everything compiled and linked into the app ..."
This sounds very much like static linking, possibly with no option of dynamic linking/loading of code.Presumably this would have implications for those using LGPL-licensed .NET libraries, especially those who'd like to distributed closed-source applications AOT-compiled using this approach?
Are there any commonly-used .NET libraries these days that are only LGPL-licensed?
I haven't done .NET development in a decade, so I don't really know the current state of affairs.
Side note: how does that fit in with cryptographic signatures? GPL v3 was written to combat "Tivoization" (open source, but can't replace the binary). Does the LGPL v3 disallow such things with DLL/so files (use hashes to prevent replacing the FOSS lib)?
Explains why my container got stuck packaging Kestrel this morning.
NGEN, Singularity and Midori research (whose tech landed on Windows 8 MDIL and UWP .NET Native respectively), Mono AOT.
I always were the opinion that given Anders Hejlsberg background, .NET 1.0 should have had a better AOT story than NGEN.
Seems like the only reasons for upgrading from 6 to 7 would be an easier path (possibly) to upgrade later than going from 6 to 8, or if you really want to use something in c# 11 (https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/cs...) . I remain unconvinced...
In our case improved hit reload is very welcome. So I guess we will incremenet our runtime.
5 1107ms
6 1075ms
7 1211ms
Just number crunching and calling HashSet.
If you would like to have representative benchmark data, I suggest relying on BenchmarkDotNet instead.
Please use BenchmarkDotNet to get accurate numbers!
I don't foresee any issues going from 6 -> 7. 5 -> 6 was essentially just a find and replace on TargetFramework and it all just worked.