我可以从 .NET 5 项目中添加对 .NET Framework DLL 的引用吗?

lmc*_*iro 16 .net .net-5

微软最近在 Build 2019 上宣布,.NET 的下一个主要版本将把 .NET Core 3.* 和 .NET Framework 4.* 统一到一个单一的 .NET 平台中,主要版本号为 5。

我不太明白,这是否意味着使用 .NET 5 我将能够添加对用 .NET 的两个版本编写的库的引用?

例如,一个 .NET 5 项目引用了 2 个程序集,一个是针对 .NET Core 3 编译的,另一个是针对 .NET Framework 4.5 编译的(在这种情况下,因为它引用了 .NET Framework 库,我认为它只能在 Windows 上运行)。

Mar*_*ich 9

.NET 5 将具有与 .NET Core 当前具有的相同的兼容性层。

这允许您引用 .NET Framework DLL,但注意 DLL 可能不会在运行时加载或执行。如果它是一个逻辑库,它可能工作得很好。如果它减轻了例如,就没有那么多了System.Web。这对于您没有源代码的 3rd 方库特别有用。您可以使用.NET Portability Analyzer检查此类库中是否使用了不受支持的 API。

也就是说,您应该尝试将现有的 .NET Framework 库更改为 .NET Standard 或将多目标更改为 bot .NET Framework 和 .NET Standard。

  • 一些 DLL 可以正常加载和工作,而另一些 DLL 如果依赖于 .NET Core 中不存在的特定 API,则无法正常加载和工作。这就是分析仪帮助提前弄清楚的。 (3认同)

slf*_*fan 7

它将与今天一样:您将能够引用 .NET 标准库。.NET 5 并不包含经典框架的所有内容,因此无法直接引用 .NET 4.x 程序集。因此开始用 .NET Standard 编写库。

然而,在 .NET Core 2.0 中,Microsoft 实现了兼容性填充程序,允许将旧程序集中缺少的类型转发到新类型。只要您的库不使用 .NET 5 不支持的任何类,您就是安全的。

请参阅这篇文章此文章以获取更多信息。

  • 它将具有相同的兼容层,因此只要 DLL 不调用不受支持的 API,它就应该可以工作 (3认同)