I need to reference a proprietary-client library that only works with .NET 4.8, there is no other option, this is a very narrow vendor library and we have to use it with .NET 48.
The new app that is being developed is a service application and will need to be maintained in the long term. And it's ok for this app to be installed on windows only. But we would like the application to benefit from .NET 6, while being able to use the .NET 4.8 client library.
So my question is : what would/could be a good solution that:
Thanks for your help!
Yes you can reference .NET 4.8 assembly from .NET 6. However, there are no guarantees it will work as expected. It will work only if it does not use any APIs which are not present in .NET 6 (or rather .NET Standard version supported by .NET 4.8), and if APIs it uses did not have breaking (for that application logic) changes.
You can easily test it by creating .NET 4.8 library with something like this:
public class Test
{
public static void OldNet()
{
Console.WriteLine("Hello from old .NET");
}
}
Then reference it from .NET 6 and call:
OldNet4.Test.OldNet();
Run and it will print "Hello from old .NET" no problem.
However if you for example use Thread.Abort
in that old .NET 4.8 library - when running on .NET 6 it will not abort the target thread but instead will throw PlatformNotSupportedException
, which is an example of breaking change. If it calls missing api, then it will throw TypeNotFound
or similar exceptions.
So the end result depends on the library being referenced.