簡體   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