C# SharpZipLib for .NET Core - sharpziplib

We have version 0.86 of ICSharpCode.SharpZipLib.dll and it is not .NET Core compatible.
There appears to be two main (and several more) "latest" version of it. SharpZipLib and SharpZipLib.NETStandard, both by ICSharpCode.
Which is the correct one to use for .NET Core?

SharpZipLib runs on .NET Standard 2.0 in 2018.
Changes
The targeted frameworks are now:
.NET Standard 2.0 netstandard2 (Core 2.0+, FW 4.6.1+, Mono 5.2+, UWP 16299)
.NET Framework 4.5 net45 (Mono 4, Dependency-free on Windows 8+/2012+)
See: https://github.com/icsharpcode/SharpZipLib/wiki/Release-1.0
Use this one: https://www.nuget.org/packages/SharpZipLib/

Related

How to use EF Core 6.0 with an application that uses .Net Framework?

I have a situation where an application uses various component libraries. The libraries were based on .NetStandard2.0/2.1 and internally used EF Core 3.1. For various deployment and development reasons, we now want to target EF Core 6.0, which raises the following issues.
Net Core 3.1 support runs out in December 2022 so we need to move away from it.
The application uses Net Framework functionality and cannot move to Net Core.
EF Core 6.0 does not support NetStandard, only Net 6.
Changing the library that uses EF Core to target NET 6 means that components referencing it also need to reference Net 6.
Dependencies trickle down to the application that targets Net Framework and, as a result, the application no longer builds because Net Framework is not compatible Net 6.
How can the Net Framework application use the Net 6 assembly? Or, more specifically, how can a Net Framework application use libraries that internally use EF Core 6.0?
The interface between the application (Net Framework) and the one single touch point library component (Netstandard) is very well defined. Maybe Pinvoke could solve the problem? Or something simpler that I have overlooked?
Somewhat related question: NU1202 Package Microsoft.EntityFrameworkCore 6.0.3 is not compatible with netstandard2.1
Other than process to process communication between .NET Framework and .NET 6, this is not supported (for example via a Web API or similar)
As a short term solution, you can change your .Net Standard 2.0 EF Core libraries to be multi targeted to both .Net Standard 2.0 (which will reference EF Core 3.1) and .Net 6 (which will reference EF Core 6). This will let your .Net Core apps use EF Core 6, while allowing your .Net Framework apps to use the same dlls, but to be using EF Core 3.1. I realize that EF Core 3.1 support ends December 2022, but it will keep things moving.
https://learn.microsoft.com/en-us/nuget/create-packages/multiple-target-frameworks-project-file
Btw, has Microsoft even attempted to address the fact that a .Net Framework application cannot reference .Net 6, therefore it cannot use EF Core 6? This is a major issue for us, as we were sold the idea that .Net Standard could be shared between .Net Framework and .Net Core, but this has ceased to be the case since .Net Standard 2.1 was introduced, and now MS has pushed all new features, like EF Core, to .Net 6.

Can not select .NET Frameworks above 4.8

Hey I tried to install the latest .NET Framework 6.0.1 from the official Microsoft Website and it shows as installed inside the Visual Studio Installer but I am somehow not able to select it. Neither can I upgrade existing Applications to 6.0 nor create Applications with .NET Framework 6.0.
So i tried installing .NET Framework 5.0 instead but it has the excatly same issues.
The highest Version that I can choose is .NET Framework 4.8.
In case it is important I am on Windows 10 - 21H1 - 19044.1415.
Image 1
Image 2
Image 3
Last version of .NET Framework is 4.8. Last version of .NET is .NET 6. They are not the same thing, .NET is a successor of .NET Core.

Is LiteDB known to work with dotnet Core 5.0?

I am about to port a Windows forms application (dotnet 4.7x) to dotNet Core 5. The application uses LiteDB (all else is straight c# winforms stuff). Before starting I need to determine if LiteDB 5.10 will work with Core 5.0.
LiteDB 5.x is .NET Framework 4.5 and .NET Standard 2.0 compatible. You can work with LiteDB in any target framework that .NE TStantard 2.0 is compatible, like:
.NET 5
.NET Core 2+
.NET Framework 4.6.1
Mono 5.4
Xamarin.iOS 10.14
Xamarin.Mac 3.8
Xamarin.Android 8
UWP 10.0.16299
Unity 2018.1
https://learn.microsoft.com/pt-br/dotnet/standard/net-standard

How to get a .NET core 3.1 Project work with .NET 5.0 project

When .NET 5.0 was released, one of the features mentioned was the ability to create a .NET 5.0 component, that it would work with .NET 3.1, so you wouldn't have to use .net standard between different versions.
Well, I tried to use .net 3.1 with .net 5.0 and I keep getting errors. Is there something special we have to do to make these work? We have multiple applications at my company that use various versions of .NET core. from 2.2, 3.0, 3.1 to .net 5.0. We would like to create some NuGet packages for some of the reusable components, but trying to figure out how to use .net core through out these applications, I don't want to create them with .net standard.
Has anyone run into this or not?
You did not provide the errors, but despite that, it can already be said that .NET 5 does not ensure backwards compatibility. Microsoft provides information on compatibility and breaking changes here.
.NET 5 merges together .NET Framework and .NET Core, ending the burden of keeping both; the aim is to also include Mono and Xamarin (MAUI). However, it does not ensure compatibility with previous versions. This is a good article on the subject - some features were delayed to .NET 6 though.
Hence, the best ways for you to have the compatibility you want would be to use .NET Standard or, even better, migrate the applications to .NET 5, since previous versions' support will end soon. In the team I work, we made some migrations from .NET Core 3.x to .NET 5 and it was pretty straightforward.
It is worth noticing that .NET 5 is not LTS. .NET 6, on the other hand, is. More details on .NET releases and support policies here.
A .net 5.0 library/dll cannot be referenced from a .net version less than .net 5.0. .net standard 2.1 should be used for compatibility between the different versions of .net core and .net 5.0.
On another note - its probably best to update all .net core projects to 5.0 assuming this is possible. The End of Life has been reached on .net core versions <= 3.0 (not .net standard).
see here.

ILNumerics: Does this also in the Net Framework 3.5.?

I wanted to ask whether the ILNumerics library for the .Net Framework 3.5 is available.
I can with my project where I would like to use the library has not upgrade on that .Net Framework 4 or 4.5.
ILNumerics is designed for .NET framework version 4.0. On mono at least version 2.10 is recommended (http://ilnumerics.net/specifications.html)
May I ask why you don't want to upgrade the .NET framework?