是否可以从.NET 6使用.NET 4.8库?

juud5qan  于 2023-11-20  发布在  .NET
关注(0)|答案(3)|浏览(327)

我需要引用一个只适用于.NET 4.8的专有客户端库,没有其他选择,这是一个非常狭窄的供应商库,我们必须使用它与.NET 48。
正在开发的新应用程序是一个服务应用程序,需要长期维护。这个应用程序只安装在Windows上是可以的。但我们希望应用程序能够从.NET 6中受益,同时能够使用.NET 4.8客户端库。
所以我的问题是:什么会/可能是一个好的解决方案:
1.我需要在4.8中编写一些代码来使用这个库。
1.利用.NET 6和未来的增强功能
谢谢你的帮助!

tyg4sfes

tyg4sfes1#

是的,您可以从.NET 6引用.NET 4.8程序集。但是,不能保证它会按预期工作。只有当它不使用.NET 6(或者.NET 4.8支持的.NET标准版本)中不存在的任何API,并且它使用的API没有中断(对于该应用程序逻辑)更改时,它才会工作。
您可以通过创建.NET 4.8库来轻松测试它,如下所示:

public class Test
{
    public static void OldNet()
    {
        Console.WriteLine("Hello from old .NET");
    }
}

字符串
然后从.NET 6引用它并调用:

OldNet4.Test.OldNet();


运行,它将打印“你好,从旧的.NET”没有问题。
但是,如果你在旧的.NET 4.8库中使用Thread.Abort-当在.NET 6上运行时,它不会中止目标线程,而是会抛出PlatformNotSupportedException,这是一个破坏性更改的例子。如果它调用缺少的API,那么它将抛出TypeNotFound或类似的异常。
因此,最终结果取决于所引用的库。

afdcj2ne

afdcj2ne2#

是的,可以使用.NET Framework 4.8编写客户端,使用.NET Core 6编写服务器。也可以使用不同的编程语言编写客户端和服务器,因此您的用例没有理由不可能。但是,不可能从.NET Framework程序集引用.NET Core程序集。

anauzrmj

anauzrmj3#

0
是的,在同一进程中同时使用.net Core和.net Framework是可能的,前提是您将它们作为完全独立的程序集来保存,并且您愿意通过COM进行交互。
https://github.com/dotnet/samples/tree/main/core/extensions/NetComSxS中提供了如何以这种方式进行交互的示例。

相关问题