繁体   English   中英

动态加载程序集的兼容性

[英]Compatibility of dynamically loaded assemblies

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

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

  • 我可以加载 .net 标准程序集吗? 如果是,我可以加载什么特定版本?
  • 我可以加载经典的 .net 程序集,例如 .net framework 4.8 吗? 如果是,我还可以加载旧版本吗?

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

  • 我可以加载 .net 标准程序集吗?
  • 我可以加载旧的经典 .net,如程序集、.net 框架 4.6 吗?

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

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

这是什么意思?

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

.NET 框架和 .NET 核心这两个目标是一个平台。 .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/ReferencingNETStandardAssembliesFromBothNETCoreAndNETFramework.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM