簡體   English   中英

我可以從 .NET 5 項目中添加對 .NET Framework DLL 的引用嗎?

[英]Can I add a reference to a .NET Framework DLL from a .NET 5 project?

微軟最近在 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 上運行)。

.NET 5 將具有與 .NET Core 當前相同的兼容性層。

這允許您引用 .NET Framework DLL,但注意 DLL 可能不會在運行時加載或執行。 如果它是一個邏輯庫,它可能工作得很好。 如果它在例如System.Web上減輕,則不會那么多。 這對於您沒有源代碼的 3rd 方庫特別有用。 您可以使用.NET Portability Analyzer檢查此類庫中是否使用了不受支持的 API。

也就是說,您應該嘗試將現有的 .NET Framework 庫更改為 .NET Standard 或將多目標更改為 bot .NET Framework 和 .NET Standard。

它將與今天相同:您將能夠引用 .NET Standard 庫。 .NET 5 不包含經典框架的所有內容,因此無法直接引用 .NET 4.x 程序集。 因此開始在 .NET Standard 中編寫庫。

但是,在 .NET Core 2.0 中,Microsoft 實現了兼容性填充,允許將舊程序集中缺少的類型轉發到新類型。 只要您的庫不使用 .NET 5 不支持的任何類,您就是安全的。

看到這個職位了解更多信息。

這是一個很好的問題,我花了很多時間試圖為自己回答。 真正幫助我的一件事是意識到 .NET 5.0 實際上只是 .NET Core 的下一個版本。

這個 24:30 標記的視頻確實很好地說明了這一點: https ://youtu.be/4WJHCvwE2VM?t =1470

考慮到這一點,我們可以看到事情將繼續像在 .NET Core 2.0 及更早版本中那樣工作,如果您想使用經典的 .NET Framework 代碼,那么您必須首先將該代碼移動到 .NET Standard 類中圖書館。

因為 .Net 不像 .net classic 那樣具有所有功能。 您可以使用從經典版本到較新版本的任何 DLL,嬰兒我也在 C# 中使用過 VB 中的庫,反之亦然。

但是有一個問題,只要庫不調用任何不受支持的 API 或已結束支持或已關閉的 API,就會出現問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM