Microsoft 最近宣布.Net 6.0 作为主要版本。我没有找到任何可以在 .net 6.0 项目中使用较旧的 .NET 框架(> 4.7.*)引用的参考?
比如说,.NET 6 项目将为 Windows 应用程序提供 .NET Framework 4.7.1 的 dll 引用?
Cod*_*ter 19
“目标”(针对/针对).NET Framework (1.0-4.8) 的程序集可能会使用 .NET Standard 或 .NET Core 中不存在的 API(类型、方法)。
因此,如果您有一个面向 .NET Standard 或 .NET Core 的项目,并且想要添加对面向 .NET Framework 的程序集的引用,则该程序集可能会在运行时引发异常,因为它缺少方法重载或类型。这些类型存在于框架 DLL 中,但不存在于 .NET Core 运行时程序集中。
现在,如果您知道(通过解释代码或通过测试,最好两者都通过)面向框架的程序集不使用 .NET Standard 或 .NET Core 中缺少的 API,那就没问题了(有关差异,请参阅What .NET Core 和 .NET 标准类库项目类型之间有什么区别?)。
如果它是存放在源代码管理中的文件夹中的程序集lib,则可以添加程序集引用:
<Reference Include="../lib/path/To/Dll.dll" />
Run Code Online (Sandbox Code Playgroud)
如果它是 NuGet 打包的依赖项,您可以安装它并覆盖警告:
<PackageReference Include="Some.Framework.Package" Version="1.0.0" NoWarn="NU1701" />
Run Code Online (Sandbox Code Playgroud)
重新编译程序集以面向 .NET Standard 2.0,并通过 NuGet 打包和分发它。
这是一个答案复杂的问题。
让我直言不讳。您的问题的答案很可能是否定的,这是不可能完成的,但那是因为您心中有一个非常具体的库。真正的答案是,这取决于相关的库,但很可能主要是针对这种情况不起作用。
是的,您可以将 .NET Framework 程序集加载到 .NET Core 5 和 6 中。
然而,根据该库的功能,可能更重要的是,它具有哪些依赖项(即它想要拖动的其他库),它可能无法正常工作于任何相当大的复杂库。
有些类在 .NET 5+ 中不存在,甚至只是单个方法重载或属性。根据您访问的 .NET Framework 的具体部分,它实际上可能在 .NET 5+ 中完全缺失。
这里有更多信息。
您最好的选择可能是尝试:
然而,实际上您可能会在重新编译时遇到完全相同的问题,因为您必须处理这些更改的位。但是,那么至少你会更多地了解什么可行、什么不可行,并且你有机会修复它。
如果您不需要更改库,则可以替换它,或者尝试并希望获得最好的结果。
一般来说,不,你不能。它们并不是真正设计为兼容的。.NET Core 以及后续的 .NET 5 和 6 都是基于 .NET 的完全重写。
使用.NET Framework 兼容模式可能有一些功能可以正常工作,但这远不能保证。
如果您希望 .NET Framework 和 .NET Core / 6 之间的库具有可靠的跨框架兼容性,您可以尝试将您的库定位为.NET Standard
| 归档时间: |
|
| 查看次数: |
66329 次 |
| 最近记录: |