I need to reference a proprietary-client library that only works with .NET 4.8 (claim made is around WCF is not supported in newer .NET versions.. but anyway this is not the topic, as we have to live with it. )
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.
So my question is : what would/could be a good solution that:
- respects that I need some code in 4.8 to work with that library.
- leverages .NET 6 and future enhancements
Thanks for your help!
CodePudding user response:
Yes, it is possible to have a client written in .NET Framework 4.8 and a server in .NET Core 6. It's possible to have a client and a server written in different programming languages as well, so there's no reason that your use case wouldn't be possible. However, it's not possible to reference a .NET Core assembly from a .NET Framework assembly.
CodePudding user response:
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.