codea
codea

Reputation: 1549

Is it possible to work with a .NET 4.8 Library from .NET 6/7 or 8?

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:

  1. respects that I need some code in 4.8 to work with that library.
  2. leverages .NET 6 and future enhancements

Thanks for your help!

Upvotes: 11

Views: 9829

Answers (2)

Evk
Evk

Reputation: 101463

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.

Upvotes: 12

Arun_Raja1
Arun_Raja1

Reputation: 285

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.

Upvotes: 0

Related Questions