我需要引用一个专有客户端库,它只能与.NET 4.8一起使用,没有其他选项,这是一个非常狭窄的供应商库,我们必须使用它与.NET 48一起使用。
正在开发的新应用程序是一个服务应用程序,并且需要长期维护。此应用程序仅可安装在Windows上,但我们希望该应用程序在使用.NET 4.8客户端库的同时受益于.NET 6和未来的增强功能。
因此我的问题是:什么样的解决方案会比较好,以便:
- 尊重我需要一些4.8代码与该库一起工作的要求。
- 利用.NET 6和未来的增强功能。
感谢您的帮助!
我需要引用一个专有客户端库,它只能与.NET 4.8一起使用,没有其他选项,这是一个非常狭窄的供应商库,我们必须使用它与.NET 48一起使用。
正在开发的新应用程序是一个服务应用程序,并且需要长期维护。此应用程序仅可安装在Windows上,但我们希望该应用程序在使用.NET 4.8客户端库的同时受益于.NET 6和未来的增强功能。
因此我的问题是:什么样的解决方案会比较好,以便:
感谢您的帮助!
是的,您可以从.NET 6引用.NET 4.8程序集。但是,不能保证它按预期工作。仅当它不使用在.NET 6中不存在的任何API(或.NET 4.8支持的.NET标准版本)并且它使用的API没有发生破坏性更改(对于应用程序逻辑而言)时,才能正常工作。
您可以通过创建类似以下内容的.NET 4.8库轻松测试它:
public class Test
{
public static void OldNet()
{
Console.WriteLine("Hello from old .NET");
}
}
然后在.NET 6中引用它并调用:
OldNet4.Test.OldNet();
运行代码,将会输出 "Hello from old .NET"。
但是如果在这个旧的 .NET 4.8 库中使用了 Thread.Abort
- 在 .NET 6 上运行时,它将不会终止目标线程,而是抛出 PlatformNotSupportedException
异常,这是一个打破变更的例子。如果调用了缺失的 API,则会抛出 TypeNotFound
或类似的异常。
因此,最终结果取决于所引用的库。
0
是的,可以在同一个进程中同时使用 .net Core 和 .net Framework,只要你将它们作为完全独立的程序集,并且愿意通过 COM 进行交互。