首页 > 解决方案 > 动态加载程序集的兼容性

问题描述

我想在运行时动态加载 dotnet 程序集。

假设我有 netcore 3.1 控制台应用程序:

当我有 dotnet framework 4.8 控制台应用程序时,相反的情况会怎样:

标签: c#.net.net-core

解决方案


.NET Standard 是一个接口- 您可以调用的 API 版本列表。

.NET 标准可以被 .NET 框架和 .NET 核心引用。

这是什么意思?

您应该对类库使用 .Net 标准。

.NET framework 和 .NET core 这两个都针对一个平台。.Net 框架仅适用于 Windows,而 .Net 核心适用于所有三个(Windows/Linux/MacOS)操作系统。这些不应相互引用。

这就是.Net 标准存在的原因。

所以要快速回答你的问题。

  • 我可以加载 .net 标准程序集吗?如果是,我可以加载哪个特定版本?是的,您应该使用 .Net 标准
  • 我可以加载经典的 .net 程序集,例如 .net framework 4.8 吗?如果是,我还可以加载旧版本吗?你可能可以,当然你不应该

当我有 dotnet framework 4.8 控制台应用程序时,相反的情况会怎样:

这适用于 .NET 标准。取自 Microsoft Docs。

该文档非常清楚您需要注意什么。下面的文字与屏幕截图中的文字类似。我在这里添加是为了更具可读性。

下表列出了支持每个 .NET Standard 版本的最低平台版本。这意味着所列平台的更高版本也支持相应的 .NET Standard 版本。例如,.NET Core 2.2 支持 .NET Standard 2.0 及更早版本。

指导

除此之外-> https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation-support

在此处输入图像描述

为了避免定位错误传递依赖错误或至少将它们保持在最低限度。使用 .NET 标准时将包管理更改为PackageReference 。

<RestoreProjectStyle>PackageReference</RestoreProjectStyle>

下面的链接提供了完整信息以及针对此类错误的一些故障排除提示。

来源:https ://www.hanselman.com/blog/ReferenceNETStandardAssembliesFromBothNETCoreAndNETFramework.aspx


推荐阅读